{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 分类训练"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 机器学习的HelloWorld ，一个新的分类算法，都会看看在MNIST的上的执行结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b'\\x00\\x00\\x00\\x02'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import struct # 主要用来解压成字节数据\n",
    "struct.pack('>i',2) # 高位字节"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "![jupyter](./g1.png)\n",
    "![jupyter](./g2.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2051, 60000, 28, 28)\n",
      "47040000\n"
     ]
    }
   ],
   "source": [
    "import struct\n",
    "with open('./MNIST_data/train-images-idx3-ubyte', 'rb') as f:\n",
    "    buffer = f.read(4*4) # 4个int\n",
    "    head = struct.unpack('>iiii',buffer)\n",
    "    print(head)\n",
    "    length = head[1] * head[2]  * head[3]\n",
    "    print(length)\n",
    "    buffer = f.read(length)\n",
    "#   print(buffer)\n",
    "    data = struct.unpack('>{}B'.format(length),buffer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "47040000"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n",
      "0\n",
      "0\n",
      "0\n",
      "0\n"
     ]
    }
   ],
   "source": [
    "for i in range(5):\n",
    "    print(data[i])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tuple"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 重构元组为一个三维的矩阵\n",
    "import numpy as np\n",
    "imgs = np.reshape(data, (head[1], head[2], head[3]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "numpy.ndarray"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(imgs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imgs.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 展示前五的图片\n",
    "import matplotlib.pyplot as plt\n",
    "for i in range(5):\n",
    "    plt.imshow(imgs[i], cmap = 'gray')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "G:\\Python37\\lib\\site-packages\\sklearn\\feature_extraction\\text.py:17: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working\n",
      "  from collections import Mapping, defaultdict\n"
     ]
    }
   ],
   "source": [
    "# 本地读取数据\n",
    "from sklearn.datasets import fetch_mldata\n",
    "mnist = fetch_mldata('MNIST original', data_home='./')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'DESCR': 'mldata.org dataset: mnist-original',\n",
       " 'COL_NAMES': ['label', 'data'],\n",
       " 'target': array([0., 0., 0., ..., 9., 9., 9.]),\n",
       " 'data': array([[0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        ...,\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)}"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mnist"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* DESCR 数据集描述\n",
    "* data 包含一个数组，每个实例为一行，每个特征为一列\n",
    "* target 包含一个带有标签的数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "X, y = mnist['data'], mnist['target']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "X.shape\n",
    "x = np.reshape(X, (70000,28,28))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(70000,)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAANAUlEQVR4nO3db4gc9R3H8c8nmjxJqiRNjMHGphaRlmJNDVKwqKW0qAixaEuDSEolF6GRCj6opGBiqiC1f+gDjV5RmpZqKUQxBmkqoTTtk5I7STU2bc5KGtM7koqIig9avW8f3KScye3suTOzs7nv+wXH7s53d+abyX1uZnZ29ueIEIC5b17bDQDoD8IOJEHYgSQIO5AEYQeSOLufC7PNW/9AwyLCM02vtGW3fa3tv9t+xfbdVeYFoFnu9Ty77bMkHZb0ZUnHJO2XtC4i/lryGrbsQMOa2LJfIemViHg1Iv4j6deS1laYH4AGVQn7BZJem/b4WDHtA2wP2R6xPVJhWQAqqvIG3Uy7CqftpkfEsKRhid14oE1VtuzHJK2c9vhjksartQOgKVXCvl/SxbY/YXuBpG9I2lVPWwDq1vNufES8Z3uTpD2SzpL0eES8XFtnAGrV86m3nhbGMTvQuEY+VAPgzEHYgSQIO5AEYQeSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kARhB5Ig7EAShB1IgrADSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJEHYgSQIO5AEYQeSIOxAEj0P2Ywc1qxZU1rfv39/aX1ycrLOdj5gy5YtpfX77ruvsWWfiSqF3fYRSW9Lel/SexFR/psBoDV1bNm/GBGv1zAfAA3imB1IomrYQ9LvbI/aHprpCbaHbI/YHqm4LAAVVN2NvzIixm2fJ+l523+LiH3TnxARw5KGJcl2VFwegB5V2rJHxHhxe0LS05KuqKMpAPXrOey2F9r+yMn7kr4i6WBdjQGoV5Xd+OWSnrZ9cj5PRMRva+kKA6Pbuexu59HbPM++bNmyjrWdO3eWvnbfvn2l9TNRz2GPiFclfbbGXgA0iFNvQBKEHUiCsANJEHYgCcIOJMElrnPcqlWrSut79uwprZ9//vk1dtNfmzZt6lg7fPhw6Wvn4qk3tuxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kATn2ee4s88u/y++6KKL+tQJ2saWHUiCsANJEHYgCcIOJEHYgSQIO5AEYQeS4Dz7HLdt27a2W+how4YNpfXLL7+8tH777bfX2c6cx5YdSIKwA0kQdiAJwg4kQdiBJAg7kARhB5LgPPsZ4Lrrriut7969u0+dnO7+++8vrd9zzz09z/ucc84prc+bV76tKqsXQ42n0nXLbvtx2ydsH5w2bYnt522PFbeLm20TQFWz2Y3/uaRrT5l2t6S9EXGxpL3FYwADrGvYI2KfpDdOmbxW0o7i/g5JN9bcF4Ca9XrMvjwiJiQpIiZsn9fpibaHJA31uBwANWn8DbqIGJY0LEm2o+nlAZhZr6fejtteIUnF7Yn6WgLQhF7DvkvS+uL+eknP1NMOgKZ03Y23/aSkayQttX1M0hZJD0j6je3bJB2V9LUmm0S5ycnJ1pZd5Tx6NxHlR31V/t3d5j0XdQ17RKzrUPpSzb0AaBAflwWSIOxAEoQdSIKwA0kQdiAJLnE9A9x7772tLXt8fLyxeS9YsKC0vnTp0saWnRFbdiAJwg4kQdiBJAg7kARhB5Ig7EAShB1IgvPsZ4CRkZHS+urVqxtb9tBQc98odscdd5TWN2/e3NiyM2LLDiRB2IEkCDuQBGEHkiDsQBKEHUiCsANJcJ79DLBx48bSepWvVN61a1dpfXR0tOd5d9PkOXycji07kARhB5Ig7EAShB1IgrADSRB2IAnCDiTBefYB8Nxzz5XW583r/W/y2NhYaf2mm27qed5V2S6tV/l3S9KePXs61h566KFK8z4TdV2bth+3fcL2wWnTttr+l+0Dxc/1zbYJoKrZ/On8uaRrZ5j+k4i4rPgp3zQBaF3XsEfEPklv9KEXAA2qclC0yfaLxW7+4k5Psj1ke8R2+RepAWhUr2HfLumTki6TNCHpR52eGBHDEbEmItb0uCwANegp7BFxPCLej4hJST+TdEW9bQGoW09ht71i2sOvSjrY6bkABkPX8+y2n5R0jaSlto9J2iLpGtuXSQpJRySVX3Cd3NVXX11av+SSS0rr3a5XL6tHROlrm3bzzTd3rC1ZsqT0tVWu05ek7du3V3r9XNM17BGxbobJjzXQC4AG8XFZIAnCDiRB2IEkCDuQBGEHkuAS1z649NJLS+sXXnhhnzqp38KFC0vrN9xwQ8faueeeW2nZGzZsKK0/++yzleY/17BlB5Ig7EAShB1IgrADSRB2IAnCDiRB2IEkOM8+x3UbkrmqBx98sLR+yy23NLbsiYmJxuY9F7FlB5Ig7EAShB1IgrADSRB2IAnCDiRB2IEkOM8+xw0PD1d6/bZt20rrGzeWf4t4la+D7vYZgdHR0Z7nnRFbdiAJwg4kQdiBJAg7kARhB5Ig7EAShB1IgvPsfWC7tD5vXvnf3G71MldddVVp/a677iqtdzuPXqW3J554orR+66239jxvnK7r/5TtlbZ/b/uQ7Zdtf6eYvsT287bHitvFzbcLoFez+bP8nqS7IuJTkj4v6du2Py3pbkl7I+JiSXuLxwAGVNewR8RERLxQ3H9b0iFJF0haK2lH8bQdkm5sqkkA1X2oY3bbqyStlvRnScsjYkKa+oNg+7wOrxmSNFStTQBVzTrsthdJ2inpzoh4q9ubTidFxLCk4WIe0UuTAKqb1VuptudrKui/ioinisnHba8o6isknWimRQB16Lpl99Qm/DFJhyLix9NKuyStl/RAcftMIx3OARHlOzRVLgPt9vqql7g22dvWrVsrzRsfzmx246+UdKukl2wfKKZt1lTIf2P7NklHJX2tmRYB1KFr2CPiT5I6HaB/qd52ADSFj8sCSRB2IAnCDiRB2IEkCDuQBJe49sGbb75ZWn/33XdL64sWLaqznVqNjY2V1h955JGOtaNHj9bdDkqwZQeSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJNztWutaF8Y31cyo29c1P/zww6X1qtecVzF//vzWlo2ZRcSMV6myZQeSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJLiefQA8+uijpfVly5aV1rds2dKxNj4+XvraoSFG5sqCLTuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJNH1enbbKyX9QtL5kiYlDUfET21vlbRB0r+Lp26OiOe6zIvr2YGGdbqefTZhXyFpRUS8YPsjkkYl3Sjp65LeiYgfzrYJwg40r1PYZzM++4SkieL+27YPSbqg3vYANO1DHbPbXiVptaQ/F5M22X7R9uO2F3d4zZDtEdsjlToFUMmsv4PO9iJJf5B0f0Q8ZXu5pNclhaTva2pX/1td5sFuPNCwno/ZJcn2fEm7Je2JiB/PUF8laXdEfKbLfAg70LCev3DStiU9JunQ9KAXb9yd9FVJB6s2CaA5s3k3/guS/ijpJU2depOkzZLWSbpMU7vxRyRtLN7MK5sXW3agYZV24+tC2IHm8b3xQHKEHUiCsANJEHYgCcIOJEHYgSQIO5AEYQeSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJPo9ZPPrkv457fHSYtogGtTeBrUvid56VWdvH+9U6Ov17Kct3B6JiDWtNVBiUHsb1L4keutVv3pjNx5IgrADSbQd9uGWl19mUHsb1L4keutVX3pr9ZgdQP+0vWUH0CeEHUiilbDbvtb2322/YvvuNnroxPYR2y/ZPtD2+HTFGHonbB+cNm2J7edtjxW3M46x11JvW23/q1h3B2xf31JvK23/3vYh2y/b/k4xvdV1V9JXX9Zb34/ZbZ8l6bCkL0s6Jmm/pHUR8de+NtKB7SOS1kRE6x/AsH2VpHck/eLk0Fq2fyDpjYh4oPhDuTgivjsgvW3VhxzGu6HeOg0z/k21uO7qHP68F21s2a+Q9EpEvBoR/5H0a0lrW+hj4EXEPklvnDJ5raQdxf0dmvpl6bsOvQ2EiJiIiBeK+29LOjnMeKvrrqSvvmgj7BdIem3a42MarPHeQ9LvbI/aHmq7mRksPznMVnF7Xsv9nKrrMN79dMow4wOz7noZ/ryqNsI+09A0g3T+78qI+Jyk6yR9u9hdxexsl/RJTY0BOCHpR202UwwzvlPSnRHxVpu9TDdDX31Zb22E/ZikldMef0zSeAt9zCgixovbE5Ke1tRhxyA5fnIE3eL2RMv9/F9EHI+I9yNiUtLP1OK6K4YZ3ynpVxHxVDG59XU3U1/9Wm9thH2/pIttf8L2AknfkLSrhT5OY3th8caJbC+U9BUN3lDUuyStL+6vl/RMi718wKAM491pmHG1vO5aH/48Ivr+I+l6Tb0j/w9J32ujhw59XSTpL8XPy233JulJTe3W/VdTe0S3SfqopL2SxorbJQPU2y81NbT3i5oK1oqWevuCpg4NX5R0oPi5vu11V9JXX9YbH5cFkuATdEAShB1IgrADSRB2IAnCDiRB2IEkCDuQxP8A2Wr6jAGb5u4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "for i in range(5):\n",
    "    plt.imshow(x[i], cmap = 'gray')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "some_digit = X[36000]\n",
    "some_digit_image = some_digit.reshape(28, 28)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAANpElEQVR4nO3db6xU9Z3H8c9XLQ+UJoB3NCAutzZg1piUkgnZxE1jbbZRicE+qMIDZJMmtw/EQMSkpE2shiekrjY1MU3oQnpduzaYlgUj2a3BJoQHVkcDgiVFivyrN9wBEnv7gHSx3z64x+YCc37nMufMnIHv+5VMZuZ858z5Zrgfzsz5zZmfubsAXPuuq7sBAP1B2IEgCDsQBGEHgiDsQBA39HNjQ0NDPjw83M9NAqEcO3ZMZ86csU61UmE3s/sl/UTS9ZL+0903pR4/PDysVqtVZpMAEprNZm6t67fxZna9pJckPSDpLkkrzeyubp8PQG+V+cy+VNIRdz/q7n+V9EtJy6tpC0DVyoT9Nkknp9w/lS27iJmNmFnLzFrtdrvE5gCUUSbsnQ4CXPbdW3ff7O5Nd282Go0SmwNQRpmwn5J0+5T78yV9Uq4dAL1SJuzvSlpoZl8ysxmSVkjaWU1bAKrW9dCbu18wszWS/k+TQ29b3f3DyjoDUKlS4+zuvkvSrop6AdBDfF0WCIKwA0EQdiAIwg4EQdiBIAg7EARhB4Ig7EAQhB0IgrADQRB2IAjCDgRB2IEgCDsQBGEHgiDsQBCEHQiCsANBEHYgCMIOBEHYgSAIOxAEYQeCIOxAEIQdCIKwA0EQdiAIwg4EQdiBIErN4grUadu2bcn6gQMHcmsvv/xy1e1c5Pjx4z19/m6UCruZHZM0IekzSRfcvVlFUwCqV8We/evufqaC5wHQQ3xmB4IoG3aX9Bsze8/MRjo9wMxGzKxlZq12u11ycwC6VTbs97j7EkkPSHrczL526QPcfbO7N9292Wg0Sm4OQLdKhd3dP8muxyVtl7S0iqYAVK/rsJvZTWb2xc9vS/qmpINVNQagWmWOxt8qabuZff48/+3u/1tJV7hmTExM5Nb27t2bXHfjxo3J+ttvv52sZ3+byHQddnc/KukrFfYCoIcYegOCIOxAEIQdCIKwA0EQdiAITnG9xl24cCFZHxsbK/X8RcNjH3/8cW7trbfeKrXtXhoaGkrWV6xY0adOqsOeHQiCsANBEHYgCMIOBEHYgSAIOxAEYQeCYJz9Glc0jj48PJysu3uyPsinkS5evDi3tmrVquS6y5YtS9YXLlzYVU91Ys8OBEHYgSAIOxAEYQeCIOxAEIQdCIKwA0Ewzn6Ne+qpp5L1onH0onqRefPm5dZGRjrOGPYPTz/9dKlt42Ls2YEgCDsQBGEHgiDsQBCEHQiCsANBEHYgCMbZrwFbt27Nre3atSu5btnz0YvWP3v2bG6t6DftDx8+nKwvWrQoWcfFCvfsZrbVzMbN7OCUZXPM7E0z+yi7nt3bNgGUNZ238T+XdP8lyzZI2u3uCyXtzu4DGGCFYXf3PZLOXbJ4uaTR7PaopIcr7gtAxbo9QHeru49JUnZ9S94DzWzEzFpm1mq3211uDkBZPT8a7+6b3b3p7s1Go9HrzQHI0W3YT5vZXEnKrserawlAL3Qb9p2SVme3V0vaUU07AHrFpvG74K9KulfSkKTTkn4o6X8kbZP0T5JOSPq2u196EO8yzWbTW61WyZbjSY2jS9KTTz6ZW5uYmCi17Tp/N37BggXJ+tGjR3u27atVs9lUq9Xq+I9S+KUad1+ZU/pGqa4A9BVflwWCIOxAEIQdCIKwA0EQdiAITnG9Cjz77LPJepnhtVmzZiXrM2fOTNavuy69vzh//nxubXw8/V2s48ePJ+u4MuzZgSAIOxAEYQeCIOxAEIQdCIKwA0EQdiAIxtmvAsuXL0/WX3rppdza6tWrc2uStGbNmmR9yZIlyXqRsbGx3NqyZcuS6+7fv7/UtnEx9uxAEIQdCIKwA0EQdiAIwg4EQdiBIAg7EATj7FeBF198sVS9Tqmfoi76meqiOq4Me3YgCMIOBEHYgSAIOxAEYQeCIOxAEIQdCIJx9szJkyeT9RtvvDG3dvPNN1fdzjUjdU560XTPRfUdO3Yk60W/AxBN4Z7dzLaa2biZHZyy7Bkz+5OZ7csuD/a2TQBlTedt/M8l3d9h+Y/dfXF22VVtWwCqVhh2d98j6VwfegHQQ2UO0K0xsw+yt/mz8x5kZiNm1jKzVrvdLrE5AGV0G/afSvqypMWSxiQ9n/dAd9/s7k13bzYajS43B6CsrsLu7qfd/TN3/5ukn0laWm1bAKrWVdjNbO6Uu9+SdDDvsQAGQ+E4u5m9KuleSUNmdkrSDyXda2aLJbmkY5K+28MeK7Fp06ZkfXR0NFmfMWNGbu2OO+5Irrt9+/Zk/Wp29uzZZH3Dhg25tYMH0/uI4eHhblpCjsKwu/vKDou39KAXAD3E12WBIAg7EARhB4Ig7EAQhB0IIswpru+8806yfvjw4a6f+8SJE8n6+vXrk/Xnn8/9AmLtik79feONN5L11PDaDTek//zuvvvuZJ1TWK8Me3YgCMIOBEHYgSAIOxAEYQeCIOxAEIQdCCLMOHsvzZo1K1kf5HH0ImvXrk3Wi37OOWXevHk9e25cjj07EARhB4Ig7EAQhB0IgrADQRB2IAjCDgQRZpy96GeJZ86cmaxPTEzk1h566KFuWuqLRx99NFl/7bXXknV3T9aLplVOee6557peF1eOPTsQBGEHgiDsQBCEHQiCsANBEHYgCMIOBBFmnP2FF15I1o8cOZKsp34f/fz588l1i8ayi2zcuDFZ//TTT3Nr586dS65bNE5+5513JuuPPfZY1/U5c+Yk10W1CvfsZna7mf3WzA6Z2YdmtjZbPsfM3jSzj7Lr2b1vF0C3pvM2/oKk9e7+z5L+RdLjZnaXpA2Sdrv7Qkm7s/sABlRh2N19zN3fz25PSDok6TZJyyWNZg8blfRwr5oEUN4VHaAzs2FJX5X0O0m3uvuYNPkfgqRbctYZMbOWmbXa7Xa5bgF0bdphN7OZkn4laZ27/3m667n7Zndvunuz0Wh00yOACkwr7Gb2BU0G/Rfu/uts8Wkzm5vV50oa702LAKpQOPRmk2MzWyQdcvep41c7Ja2WtCm7vqp/93fdunXJempa5t27dyfX3bJlS7Ley9NIFy1alKwPDQ0l66+88kqyvmDBgivuCfWYzjj7PZJWSTpgZvuyZd/XZMi3mdl3JJ2Q9O3etAigCoVhd/e9kvJ2Ld+oth0AvcLXZYEgCDsQBGEHgiDsQBCEHQgizCmuRe67775kPTWWXnQa6f79+5P1PXv2JOuvv/56sv7EE0/k1h555JHkuvPnz0/Wce1gzw4EQdiBIAg7EARhB4Ig7EAQhB0IgrADQVjRudRVajab3mq1+rY9IJpms6lWq9XxLFX27EAQhB0IgrADQRB2IAjCDgRB2IEgCDsQBGEHgiDsQBCEHQiCsANBEHYgCMIOBEHYgSAIOxBEYdjN7HYz+62ZHTKzD81sbbb8GTP7k5ntyy4P9r5dAN2aziQRFyStd/f3zeyLkt4zszez2o/d/T961x6AqkxnfvYxSWPZ7QkzOyTptl43BqBaV/SZ3cyGJX1V0u+yRWvM7AMz22pms3PWGTGzlpm12u12qWYBdG/aYTezmZJ+JWmdu/9Z0k8lfVnSYk3u+Z/vtJ67b3b3prs3G41GBS0D6Ma0wm5mX9Bk0H/h7r+WJHc/7e6fufvfJP1M0tLetQmgrOkcjTdJWyQdcvcXpiyfO+Vh35J0sPr2AFRlOkfj75G0StIBM9uXLfu+pJVmtliSSzom6bs96RBAJaZzNH6vpE6/Q72r+nYA9ArfoAOCIOxAEIQdCIKwA0EQdiAIwg4EQdiBIAg7EARhB4Ig7EAQhB0IgrADQRB2IAjCDgRh7t6/jZm1JR2fsmhI0pm+NXBlBrW3Qe1LorduVdnbAnfv+PtvfQ37ZRs3a7l7s7YGEga1t0HtS6K3bvWrN97GA0EQdiCIusO+uebtpwxqb4Pal0Rv3epLb7V+ZgfQP3Xv2QH0CWEHgqgl7GZ2v5n9wcyOmNmGOnrIY2bHzOxANg11q+ZetprZuJkdnLJsjpm9aWYfZdcd59irqbeBmMY7Mc14ra9d3dOf9/0zu5ldL+mwpH+TdErSu5JWuvvv+9pIDjM7Jqnp7rV/AcPMvibpL5Jedve7s2U/knTO3Tdl/1HOdvfvDUhvz0j6S93TeGezFc2dOs24pIcl/btqfO0SfT2iPrxudezZl0o64u5H3f2vkn4paXkNfQw8d98j6dwli5dLGs1uj2ryj6XvcnobCO4+5u7vZ7cnJH0+zXitr12ir76oI+y3STo55f4pDdZ87y7pN2b2npmN1N1MB7e6+5g0+ccj6Zaa+7lU4TTe/XTJNOMD89p1M/15WXWEvdNUUoM0/nePuy+R9ICkx7O3q5ieaU3j3S8dphkfCN1Of15WHWE/Jen2KffnS/qkhj46cvdPsutxSds1eFNRn/58Bt3serzmfv5hkKbx7jTNuAbgtatz+vM6wv6upIVm9iUzmyFphaSdNfRxGTO7KTtwIjO7SdI3NXhTUe+UtDq7vVrSjhp7ucigTOOdN824an7tap/+3N37fpH0oCaPyP9R0g/q6CGnrzsk7c8uH9bdm6RXNfm27v81+Y7oO5JulrRb0kfZ9ZwB6u2/JB2Q9IEmgzW3pt7+VZMfDT+QtC+7PFj3a5foqy+vG1+XBYLgG3RAEIQdCIKwA0EQdiAIwg4EQdiBIAg7EMTfAa5yOtysgto/AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(some_digit_image, cmap = matplotlib.cm.binary)\n",
    "plt.show() "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.0"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y[36000]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 建立测试集和训练集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([37309, 26242,   977, ...,  9851, 30025, 52822])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将数据集合交叉洗牌，交叉验证时，每个子集合数据分布均匀，有些机器学习算法对训练实例的顺序敏感\n",
    "import numpy as np\n",
    "shuffle_index = np.random.permutation(60000)\n",
    "shuffle_index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, y_train = X_train[shuffle_index], y_train[shuffle_index]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       ...,\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练一个二元分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False, False, False, ..., False, False, False])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 识别数字5 ，二元分类5或者非5\n",
    "# 创建目标向量\n",
    "y_train_5 = (y_train == 5)\n",
    "y_train_5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ..., False,  True, False],\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       ...,\n",
       "       [False, False,  True, ..., False, False, False],\n",
       "       [False, False, False, ..., False, False,  True],\n",
       "       [False,  True, False, ..., False, False, False]])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_5.reshape(20, -1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_test_5 = (y_test == 5) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([ True])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# SGD 梯度下降 分类器， 适合非常大的数据集，独立处理训练集数据，一次一个，适合在线学习，\n",
    "from sklearn.linear_model import SGDClassifier\n",
    "\n",
    "sgd_clf = SGDClassifier(random_state = 42)\n",
    "sgd_clf.fit(X_train, y_train_5)\n",
    "\n",
    "sgd_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 性能考核"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用交叉验证测量精度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.96065, 0.95955, 0.96235])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 评估分类器比评估回归器要困难得多\n",
    "\n",
    "# 3个折叠，正确率达到 95% 以上\n",
    "from sklearn.model_selection import cross_val_score\n",
    "cross_val_score(sgd_clf, X_train, y_train_5, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 把每张图都分类成 非5\n",
    "from sklearn.base import BaseEstimator\n",
    "class Never5Classifier(BaseEstimator):\n",
    "    def fit(self, X, y=None):\n",
    "        pass\n",
    "    def predict(self, X):\n",
    "        return np.zeros((len(X), 1), dtype=bool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False],\n",
       "       [False],\n",
       "       [False],\n",
       "       ...,\n",
       "       [False],\n",
       "       [False],\n",
       "       [False]])"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.zeros((len(X), 1), dtype=bool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.9109 , 0.91005, 0.908  ])"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "never_5_clf = Never5Classifier()\n",
    "cross_val_score(never_5_clf, X_train, y_train_5, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 准确率超过90% ，因为5的图像大约只有10%，你猜一张图不是5， 90%的时间你都是正确的\n",
    "* 这说明准确率无法成为分类器的首要性能指标，特别是当你处理偏科数据集， 某些类比其他类更为频繁"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 混淆矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "# 评估分类器性能的更好方法是混淆矩阵\n",
    "# A类别实例被分为B类别次数\n",
    "# 想要知道分类器将数字3和数字5混淆多少次，通过混淆矩阵的5行3列\n",
    "from sklearn.model_selection import cross_val_predict\n",
    "\n",
    "y_train_pred = cross_val_predict(sgd_clf, X_train, y_train_5, cv=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 与 cross_val_score 相比\n",
    "* 同样执行交叉验证\n",
    "* 返回的不是评估分数，是每个折叠的预测\n",
    "* 每一个实例在模型预测时使用的数据，在训练期间从未见过"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[54079,   500],\n",
       "       [ 1849,  3572]], dtype=int64)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "confusion_matrix(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 行表示实际类别，列表示预测类别\n",
    "# 第一行 第一列 53272 被正确的分为 非5 ，真负类\n",
    "# 第一行 第二列 1307 被错误的分类成 5 ，假正类\n",
    "# 第二行 第一列 1077 张被错误的分为 非5， 假负类\n",
    "# 第二行 第二列 4344 张被正确的分在了5 ，真正类\n",
    "# 这种衡量方式太复杂，我们可以用更简单的指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[54579,     0],\n",
       "       [    0,  5421]], dtype=int64)"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_perfect_predictions = y_train_5\n",
    "confusion_matrix(y_train_5, y_train_perfect_predictions)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "\n",
    "## 正类预测的准确率 被称为分类器的精度\n",
    "\n",
    "\n",
    "$\n",
    "\\text{精度} = \\cfrac{TP}{TP + FP}\n",
    "$\n",
    "\n",
    "TP是真正类的数量，FP是假正类的数量\n",
    "\n",
    "\n",
    "\n",
    "$\n",
    "\\text{召回率TPR} = \\cfrac{TP}{TP + FN}\n",
    "$\n",
    "* 检测正类实例的比例\n",
    "FN是假负类的数量\n",
    "![jupyter](./zhaohui.jpg)\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 精度和召回率\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8772102161100196"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import precision_score, recall_score\n",
    "\n",
    "precision_score(y_train_5, y_train_pred) # 4327 / 4327 + 1276"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6589190186312488"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, y_train_pred)    #  4327 / 4327 + 1094"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 说明 检测一张图的时候，只有90%的概率是准确的，而且只有64%的数字5 被它检测出来\n",
    "# 精度和召回率合成单一指标，成为 F1 分数，谐波平均值\n",
    "# 平均值平等对待所有的值，谐波平均值会给予较低值更高的权重，只有召回率和精度都很高时，才能获得较高的F1分数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$\n",
    "F_1 = \\cfrac{2}{\\cfrac{1}{\\text{precision}} + \\cfrac{1}{\\text{recall}}} = 2 \\times \\cfrac{\\text{precision}\\, \\times \\, \\text{recall}}{\\text{precision}\\, + \\, \\text{recall}} = \\cfrac{TP}{TP + \\cfrac{FN + FP}{2}}\n",
    "$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7525545138523121"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import f1_score\n",
    "f1_score(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "# F1分数对那些具有相近精度和召回率 分类器更有利，这不一定符合你的期望\n",
    "# 有时候你更关心精度，有时你能关心召回率\n",
    "# 训练一个分类器检测儿童可以放心观看的视频，你可能要求拦截了很多好的视频，低召回率，保留下来的都是安全的视频，高精度\n",
    "# 不能同时增加精度并减少召回率，反之亦然"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 精度/召回率权衡"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "![jupyter](./quanheng.jpg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* SGDClassifier对每个实例基于决策函数计算一个分值，大于阀值为正类，否则为负类\n",
    "* 中间阀值右侧找到4个真正类 真5 ， 一个假正类 6， 精度为 4/5 80%\n",
    "* 在所有的6个 真正的5 中，分类器找到了4个，召回率为 4/6 67%\n",
    "* 提高阀值，向右移动，精度提高，召回降低\n",
    "* 反之阀值降低，召回提高，精度降低\n",
    "* SKlearn不可以直接设置阀值，可以访问决策分数，\n",
    "* SGDClassifier 默认阀值为0 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 如何设置阀值\n",
    "\n",
    "# 用predict_proba得到每个实例属于正类的概率，然后对概率切一下。以LogisticRegression为例\n",
    "# clf = LogisticRegression()\n",
    "# clf.fit(X_train, y_train)\n",
    "# pred_proba = clf.predict_proba(X_test)[:, 1]\n",
    "# threshold = 0.75  # 阀值设置为0.75\n",
    "# pred_label = pred_proba > threshold\n",
    "\n",
    "# pred_proba是每个实例为真的概率\n",
    "# 假设阈值是0.75\n",
    "# pred_label里True就是概率大于0.75的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([42664.65743528])"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 返回决策值decision_function\n",
    "y_scores = sgd_clf.decision_function([some_digit])\n",
    "y_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "threshold = 0\n",
    "y_some_digit_pred = (y_scores > threshold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ True])"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_some_digit_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False])"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 提高阀值可以降低召回率，提高阀值到200000，就错了这个图\n",
    "threshold = 200000\n",
    "y_some_digit_pred = (y_scores > threshold)\n",
    "y_some_digit_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "# 如何决定使用什么阀值\n",
    "# 返回决策值，而不是预测结果\n",
    "y_scores = cross_val_predict(sgd_clf, X_train, y_train_5, cv=3,\n",
    "                             method=\"decision_function\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000,)"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 有了y_scores，可以计算所有可能的阀值的精度和召回率\n",
    "y_scores.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import precision_recall_curve\n",
    "\n",
    "precisions, recalls, thresholds = precision_recall_curve(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeMAAAEPCAYAAABx8azBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3wU1frH8c/JZtMLkFAChI7Sa6gqIEWaCldAQQREEQGvv3vBAt6LgGLBKwoqIiBCQJqgNBHpzQJCUIpSJDQpQkgCCellz++PAykQIECSSXnevvaV2dkzO8+GmG/mzMw5SmuNEEIIIazjZHUBQgghRFEnYSyEEEJYTMJYCCGEsJiEsRBCCGExCWMhhBDCYhLGQgghhMVuGcZKqVlKqTCl1O83eF0ppT5WSoUqpfYppRrlfJlCCCFE4ZWdI+NgoNNNXu8MVL/yGAx8dvdlCSGEEEXHLcNYa70NiLxJk27AXG3sAIoppQJyqkAhhBCisHPOgfcoB5zK8Pz0lXV/X9tQKTUYc/SMp6dn4xo1auTA7oUQQohb278fkpIyr6tXD+x2s3zkCERHZ72try9Uq2aWk5LMe91ItWqmPcDZs/B3pjTcHa61LnntNjkRxiqLdVmOsam1ngHMALAH2vX5vudxtbni6eKJt4s3rs6ueLl44ebshrOTM3YnO85Ozrg7u+Nud8fZyTnt4WpzxcPugc3Jhk3ZcFJOacueLp5U8K2An7sfbs5ueLt64+PqkwMfVQghCraUFLDZQF35zf399+DmBj4+5lGsGJQoYdpYzeGAoUPh999NXcWLQ6lScM89MGRIervz58Hf/+Y1nz0L5cqBtzdMnZq+vkcPcHc3y5s2mXZZKV8e2rQxy7GxsGzZjff14INmXwB79pj6r+rXT53MahuVnbGplVKVgFVa6zpZvDYd2KK1Xnjl+WGgjdb6uiPjTNuVVZrnb7nrHOOknLApGzYnW9ry1QB3d3anhHsJ/D388XH1wcfVBxebS6bw93X1JdA3EF9XX4q5FUt73W6z4+bshq+rr/nq5ourzRWlsvobRQghsi85GZYvB1dXePTR9PWpqbcOy717TdAWLw6bN8PFi7BzJ1y6BFu3QqtWpp2HB8THZ95WKbPdO+/A81d+T+/YAXPnmvVXH2XLmmCsVCm9nnnzIDQUAgJMIJUpA6VLmxB1db15zUeOmG07dzbPf/0VGje+vl2zZqYeMH9cuLqCk5PZX9WqZt/+/ubRowfUrAnffAM9e0KHDrBu3c3ryE1Kqd1a66Br1+fEkfFK4J9KqUVAMyDqVkEMUK9MPb7997ckpiQSnRhNfEo8CSkJRCdGk5SaRIojhRRHCsmpycQkxZDsSM60LjY5lqTUJFIdqaTqVBzaQapOJTk1mQtxFwiLDSMqIYqElATC48JJdiTj0A6SHclZ1nPm8pkc+Fakc3N2o1KxSmlH6O7O7mlBfTXE7U52SnuVpqRHSar7VcfH1YcS7iVwc3bL0VqEENZKTISvvzZHejNmmJAoX94EVN260L27abdtG8yZA5UrQ4UKJgwPHwY/PwgPT3+/EiVMYPr5mUeZMiaAypaFhx82AbZjB7z2Wtb1/PKLCWOHw4RTVJTpno2OhshIE9yRkZkDf+9e+OwGl+e2aAGffGL2O2MG/PBD1u2efBLmzzfLERHwxhsmqCtXhqZN4YknTKC2bm3+SDh82LTt3BmGDTPbhIebz3xVZKR5fuECnDxpHhnVrm3C2GaDJk3Me+dHtwxjpdRCoA3gr5Q6DYwF7ABa62nAaqALEArEAQOzs2O7k50KvhXurOrb5NAOE9aO9NC++jxVp3I58TIXEy4SERdBVGIUMUkxacF/NfzD48I5c/kMl5MucynhEsmp5o+DZIf5YyEuOY645DguJVwixZFCQkoCh8IPcSj80G3X6+XihZ+7Hz6uPhRzK4absxsl3EvgYffAx9WHir4Vqe5XndKepSnuXhwPuwdeLl7SFS9EDouPN92MpUrB8eMQFweeniZAS5UyR65Tp5qjuaNH4eBBEwwJCWb777+HwEA4dgyeeirrfTzySHoYHzgAs2Zd3+bSpfTl5GSIiTFBGhVl3juj0qVNKNavD6++asIqIsKEW4cO5qj6iSdMWycnWLHi+v2lpJhAvtp9C3D//SZwL1409UREwOnT5jOfPWv+uAAYNMgE3tmzcOaM6UI+fx7CwkwX8VUnT5r3u9Zvv5nvu4eHOffq6Qn/+hd07Jj1969UKfPeCQnm3+jkSfM8PNwEdO3apl337unf5/woW93UuSEoKEiHhIRYsu/clupIJS45jiORRzh7+SyXEi4RlxxHVEJUesA7kolOjCY8LpxzMec4fuk4MUkxRMRFkKpT72i/bs5uaV3tfu5+eLl4UcarDHVK1eEev3vwcfWhlGcpSriXwNfVFxebi3SniyInNdWcGzx+3ARXyZLmnGmJEiacKlQAreGhh2DDhqzfY/Fi6NXLhFb79qbbNyvnz5uw+OMPqHPlJN+990KNGua8YliY6eYdMMC8tmaNCahKlUzQnj9valqyxJzPvcrhSA/E8HBzgdDff5vwe+IJE8T5jcNhLnxyu9Lx9/ff8NVXJrQ3bzZ/VERGmu/HwYPmc4P5tyhMv6Zu1E0tYZzPaK25mHCRSwmXuJRwiZikGGKSYriUcIn45Hgi4iM4GnmUwxGHiU6M5mLCRRJSEriUcImElITb2pezkzPVSlSjSvEqlPEsw73+91Lep3xagJfyLJVLn1KI3JGQYIIxJgbOnTNHrCdPmqO/H3803alXL+TJSkBA+gU8v/0Gja4MYeTubo7WnJzMRTzjx0PLlua1F180IRIbCw0amHCOjjZHyEFB+eNCqILi4kXw8kq/urkwys1zxiIHKaUo4V6CEu4lbms7rTUxSTFExkemBXlUYhRnL59l99ndnIo+lXYkfiHuArFJsSQ7km/alV7OuxxBZYNoUb4F9/rfSwXfClQtXhVfN9+c+KhCZJvWcOiQObr69Vf46SfYssUcMY0bl97t2rix6erNytq1Jozj401IHjsGtWrB5cvmfCiAc4bfiLVrw6lTJrhvdmSWVVeruDPFi1tdgXXydRhHRUURHh5O0rU3hombcsGFUlf+q+5ZndbVs75iwaEdJKcmk6pTSXWkkuxIJtWRmtaNnqnX5CKEXQwj7ERY2hXmdpsdJ+WUdnX61YvS7rbr28XFBX9/f3x9JfSLEofDnGPdudN0Z7ZqlX5V7VtvwZgxWW+XkKFDqEuX9DB+5BFzTrN3b3OBU4cOZn3VqrBr163rcXFJPw8qRG7Lt2GckJDA+fPnKV++PO7u7nJuM485tIOElIS0i9OSUpNITEkkMTXxhtskk4xDOSjuXpzibsVxd3bHxdnltvartSY+Pp7Tp0/j6uqKm5tcWV6YHT1qgvb06evPz6ampodxeLi5+Ccw0HQJR0WZ22xq1TJBe9Xo0fD22yZIhShI8u0541OnTuHl5UXxotxvkQ85HA4SUhOIT45Pv10sNZnE1ETikuNIcaRkau9qc8Xd7o67szteLl642Fxwsblgc7r5ibTIyEhiY2MJDAzMzY8j8pjW5tyql5d5/ssv0Lx55jbNmpkQfuABaNvWrEtIMOcR5fyrKOgK3DnjhIQEymT8k1fkC05OTng4eeBh97juNa01l5MuExkfSUJKAnHJcSSmmqPpS1zK1NbLxYvibsXxcfXBbjMjrWXk7e1NRERErn4WkTcuXzbnZ8eNMwNYtGwJH35oQtfdHYYPh4oVTUg/9JA5n3st6SARhV2+DeOUlBScnfNteSILSqm0EczAhHNcchzxKfHEJMWQkJJAUmoSSalJaVeJX+Vqc6W4e3FzJO3sjofdg5SUlBvtShQAU6fCqFEmjDP6+WczlGCzZmZc4A8/tKY+IfKTfJ12cp64YFNK4eniiaeLJ/4e/mnrk1OTiUqMIiohKm0ktcTURM7FnEtrY1M2LsVc4rPvP+PpBk/TKECmyc7vIiNh2jQzUlKxYuZe0atBXKGCWRcYaG4zku5mITLL12EsCie7zY6/h39aQDu0g+iEaGKSY0hKTSI6MZoURwqJKYl8svMTPtn5CeW8y/Fg5QfpXbs3nap1uuU5Z5F3/vzTdEEvXGgGznjuObP+jTdMAL/8cvoMNkKIrOXbC7gOHjxIzZo187AikV9orUlMTeSPA38w9fhUvj74NdGJ6fOalfIsReuKralTqg7da3SnXul6FlZbNDkc8OyzEBx8/WtbtuTf8X+FsNqNLuBysqKYoio4OBilVNrD29ub+vXrM2XKlDw7P3rixAmUUgRn9Vv0Bq7WfeLEiVyrKyOlFG7ObnjYPfii2xeEvxLO3iF7ee3+1yjrXZaw2DCWHFjC2C1jqT+tPvWn1WfCjxPYf34/Du3IkxqLskuXTDdzxh+hihXNYBxaSxALcSekm9oCS5YsoXz58kRHR7NkyRJefPFFwsLCePPNN3N93wEBAWzfvp2qVatme5uuXbuyfft2AgICcrGyG7Pb7NQrXY96pesx/sHx7Dm3h/1h+/nh5A/M2z+Pfef3se/8Pl7b+Br+Hv680eYNnmn4jMx+lcOWLze3HBUrZkasql/fTB6wZYucAxbibkk3dR4KDg5m4MCBHDlyhGrVqqWtf/DBB9m9ezfR0dHXbZOcnIyzs3ORvJgtOz8D0YnRLDu4jNWhq9l4bCMR8eZ2KD93P4YGDaVnrZ7UL5MPR80vIJKSzCw8X35pbkl66CEYMcLMH2u3F64B/IXIC9JNnY81adKEy5cvs3PnTpRSTJ06lVdffZWyZcvi6urKpSvzpy1dupTmzZvj4eFBsWLF6NWrF3/99dd17/f555/TqFEj3N3dKV68OK1bt+bnn38Gsu6m3rVrFx06dMDPzw8PDw+qVKnCsGHD0l7Pqps6OTmZ0aNHU6lSJVxcXKhUqRKjR48mOTl9vuir+5o+fTpjxowhICCAYsWK8cgjj3D69Okc+d75uPowoMEAvur5FRdeucDinoupW6ouEfERvPXDWzSY3oDmM5vz3o/v8cvpX6QbOxscDli92lwV7epqghjMLUm7d5uRsFxcJIiFyEkFMoyVuvFjxoz0djNm3LxtRo0b37jd4MHp7XbvzvnPc/z4cWw2G15XhiV6++23+fPPP5kxYwbLli3Dzc2NadOm0aNHD2rVqsXXX3/N9OnT+f3332ndujWXM9zI+fLLLzN48GAaNWrE4sWLmTdvHq1atcoytAFiYmLo2LEjNpuN4OBgVq9ezZgxY255DnvAgAFMmDCB/v37s2rVKgYOHMh7773HgKtzwWXw7rvvEhoayqxZs/joo4/Yvn07ffv2vYvvWNaUUvSq3Yu9Q/aypu8aHq/9OO7O7vxy5hdGbRxF8y+aEzgpkFfWvcKJSydyfP+FxeefQ9eu6RPJe3mZ7uj9+2HlSmtrE6LQ0lpb8mjcuLG+mQMHDtzwNXOZSNaP6dPT202ffvO2GTVqdON2zz2X3i4k5KZl39Ts2bM1oA8dOqSTk5N1ZGSknjZtmnZyctLdunXTx48f14Bu2LChdjgcadtdvnxZ+/j46IEDB2Z6v+PHj2u73a4nTZqktdb6yJEj2snJSQ8fPvyGNVzdx+zZs7XWWu/atUsDeu/evbes+/jx41prrffv368BPXbs2Eztxo8fn+m9ru6rVatWmdq9//77GtBnzpy56ffrZj8D2XUp/pKe/dts3W1hN11sQjHNODTj0E5vOOlBKwbps9Fn73ofhU1iotZt22o9dKjWixeb50KInAGE6CwysUAeGd8sYjMexQ4efPO2Ge3efeN2GY+2Gze++/pr1KiB3W6nRIkSDBs2jL59+zJr1qy017t3757pHPH27duJjo6mb9++pKSkpD3Kly9PjRo12LZtGwAbNmzA4XAwOOM34RaqV69OsWLFeP7555k3bx6nTp265TZX9/fUU09lWn/1+dZrZlrv2rVrpud169YFuOHRek7ydfPl6QZPs7z3cs6/fJ71/dbzWM3HcGgHM3+bSZWPqzB8zXAi4yNzvZb8SmszucKmTWbZxQU2bjQjaPXqJZMuCJEXCmQYF3TLli1j165dHDp0iNjYWObOnUuJEunzF1971XJYWBgA7du3x263Z3rs378/bQznq1/L38a8b76+vmzevJmyZcsybNgwKlSoQJ06dfjmm29uuE1kZGSWdV4dS/zq61dl/GwArq6ugBl/PC+52FxoX6U93zz+DSHPhdClehcSUhKY/MtkKkyqQL9l/dhwbANJqUVnys5Dh8xAHaNHQ7t2EBdndUVCFE1ya5MF6tSpk+lq6mtde+W0n58fYC6kql279nXtvb29AfD3NyNanTlzhnvvvTfb9TRo0IBvvvmGlJQUQkJCePfdd3n88cfZu3cvderUua791XA9d+5cplukzp07l6ne/Kxx2cZ89+R3/HDyB0ZvHs22k9uYt28e8/bNw8/dj/fav8fAhgNxUoXz71WtYdIkeOml9HXvvw+entbVJERRVjh/0xQyLVu2xNvbm9DQUIKCgq57XA3e9u3b4+TkxIyM/eq3wdnZmebNmzN+/HgcDgcHDx7Msl3rK6M6LFq0KNP6+fPnA9CqVas72r8VHqj4AFuf3sreIXt5qcVL+Lr6EhEfwaBvB9Hk8ybsOL3D6hJz3Jo14OSUOYhPnTLDVgohrCFHxgWAj48P77//Pi+88AIXLlygc+fO+Pr6cubMGbZu3UqbNm148sknqVq1KsOHD+fDDz/k8uXLPProo9hsNnbu3EmNGjV44oknrnvvVatWMWPGDLp3707lypWJjY3l448/xtvbmxYtWmRZT+3atenTpw/jxo0jJSWFli1bsn37dsaPH0+fPn2oV6/gDU9Zr3Q9Jj40kf91+B8zds/gpXUv8evfv9Liixa0qdSGCe0m0Kx8M6vLzBH796cvt25tzg/LoB1CWEuOjAuI559/npUrV3L48GH69etH586dGTt2LCkpKTRo0CCt3cSJE5k6dSo7duygR48e9O3bl82bN1OhQoUs37d69eq4u7szfvx4OnfuzMCBA3F2dmb9+vU3Pfc8Z84cRo4cyaxZs+jSpQtffPEFI0eOZM6cOTn+2fOSk3JiSNAQTg0/xb+a/QtnJ2e2nNhC8y+aM/HniSSnJt/6TfKhQ4fgtdcgJSX9Isc1a2T0LCHyCxmBS+Rb+eFn4GL8RV5Y/QILf18IQEXfinza5VO6VO9SYEZF270bgoLMPfNHj0LlylZXJETRJSNwCXEHirsXZ0GPBSx4bAEBXgGcjDrJwwsf5r5Z9xEeF251ebf0++8miMFctHXlgnchRD4jYSxENvSp24ej/3eUkfeNxM/dj+2nt1NpciWmh0wn1ZFqdXlZWroUMpzBICwM3N2tq0cIcWMSxkJkk7vdnQntJ7BpwCaql6hObHIsQ74bQs1Pa7L+6HqsOuWTlXfeMQN2pKaaoS2jo6FkSaurEkLciISxELepXul6HP7nYaZ2mUqAVwBHIo/w0LyH6PBlBy7GX7S6PI4dg//+10z40KYNfPONmdxBCJF/SRgLcQeUUgxtMpQjLx7hP/f/By8XLzYe30jABwGM2TzG0uE1q1SBKVPM3MObNpmZl4QQ+ZuEsRB3wdPFk7fbvc0PA3+gWblmJKYmMn7beGp+WpO1oWvzrI7wcNi3L/35Cy+YaRALyAXfQhR5EsZC5IAGZRqwY9AOVj+5mhr+NQiLDaPT/E70W9aP8zHnc3XfCQnQsye0bGkG8BBCFDwSxkLkoM7VO7NvyD6GNx+OTdmYt28e98++nx//+jFX9hcfD/Xrw9at5krpe+7Jld0IIXKZhLEQOcxus/Nhxw/ZO2QvlYtVJjQylNbBrZmzJ2dHJzt2zNy69OefYLfD119DYGCO7kIIkUckjIXIJbVL1WbnczsZ2GAgDu3g6RVP88q6V3Box12/d2goVK1qgrhSJVi/3owzLYQomCSM81BwcDBKqbSHi4sLVatW5T//+U+ez+2b0dNPP02lSpXSnp84cQKlFMHBwZbVVFj4e/jzxaNf8F7791AoJm6fyKCVg+46kJ95xnwNCjLDXUoQC1GwSRhbYMmSJWzfvp3vvvuOjh078u677/LKK69YXZbIJUopXr3vVb5+/GtsysbsPbPp/XVv4pLj7vg9582DIUNgwwa4Mr20EKIAy1YYK6U6KaUOK6VClVKjsnjdVyn1rVJqr1LqD6XUwJwvtfBo0KABzZs3p0OHDkydOpX27dvzxRdf4HDcffelyL8eq/kYK/usxNPuyZIDS6j5aU32nNuT7e21Ng+AChXgs8/A1zeXihVC5KlbhrFSygZ8CnQGagF9lFK1rmn2AnBAa10faAN8oJRyyeFaC61GjRoRHx9PeLiZeCAuLo6RI0dSuXJlXFxcqFy5Mm+//fZ1YX3hwgWGDRtGYGAgrq6uBAYG0q9fPxITEwEIDQ2lX79+VK5cGXd3d6pUqcLQoUO5eNH6UaKKqi7Vu7Dl6S1ULV6Vv6L+otO8Tmw9sTVb2771Fjz5pLmVSQhRuDhno01TIFRrfQxAKbUI6AYcyNBGA97KzCnnBUQCKTlcKwDqjfwxioEem3PjEJ84cQJfX1/8/PxISUmhY8eOHDhwgNdff526deuyY8cOxo8fT2RkJB988AEAFy9epGXLlkRGRjJ69Gjq1atHWFgYK1asICkpCVdXV86ePUv58uWZPHkyxYsX59ixY7zzzjt06dKF7du351j94vYElQ1i75C9dJrfiR//+pE2c9owqeMk/t383zfcZvhwmDzZLD/3HLRtm0fFCiHyRHbCuBxwKsPz00Cza9pMAVYCZwFv4Amtr79CRSk1GBgM3HCy+6IgNTWVlJQULl++zLJly/jmm2+YPHkyNpuNL7/8kh9//JGtW7fSqlUrANq1awfAG2+8wciRIylVqhSTJk3i2LFjhISE0LBhw7T37tOnT9pyq1at0t4DoGXLllSrVo0HHniA3377LdN2Im95uniyqf8mxmwew4SfJjBi7QjqlqpLuyrtrmv75pvpQTx2rASxEIVRdsI4q0PRaw8LOwJ7gLZAVWC9UuoHrXV0po20ngHMAAgKCrqjQ8ucPCK1So0aNTI9HzZsGP/85z8BWLNmDRUrVqRly5akpKR3Ljz00EOMHj2aHTt28Oijj7Ju3TqaNGly00BNSkpi4sSJzJ07l5MnT2a6Yvvw4cMSxhaz2+y82/5d7DY747eNp8fiHvz4zI/UKVUnrc3OnfD++1fa200YCyEKn+xcwHUayDiUQHnMEXBGA4Gl2ggFjgM1EFlatmwZu3btYvXq1bRv356pU6cyd+5cAMLCwjh58iR2uz3To2nTpgBERESkfS1fvvxN9/Paa68xbtw4nnrqKb777jt27tzJ0qVLASy9lUpkNqb1GLpU70JUYhQPL3iYs5fN/15//AHNmkFMjGkXHy9jTQtRWGXnyHgXUF0pVRk4A/QGnrymzV9AO+AHpVRp4F7gWE4WWpjUqVOHatWqAdC2bVvq1avHK6+8Qo8ePfDz86Ny5cosXrw4y22v3g/s7+/PmTNnbrqfRYsW0b9/f0aPHp22Lubqb3aRbzg7ObOoxyLun30/+87vo/nM5nzf93sOHKiN3Q4PPADffw82m9WVCiFyyy2PjLXWKcA/gbXAQWCx1voPpdQQpdSQK83GAy2VUvuBjcBIrXV4bhVdmLi6uvL+++8TFhbG1KlT6dSpE6dOncLLy4ugoKDrHv7+/oDptt65cyd79+694XvHxcVht9szrZs9e3aufh5xZ7xdvVnfbz1NyzXlVPQpgj4PIqnKcqZPN/MRu8i9CUIUatk5MkZrvRpYfc26aRmWzwIP5WxpRcejjz5KkyZNmDhxIqGhocyePZt27drx0ksvUb9+fZKSkjh69CgrV65k+fLleHh4MHz4cBYsWED79u0ZPXo0devWJTw8nBUrVjBt2jS8vb3p1KkTc+bMoW7dulSrVo2lS5fy888/W/1xxQ2U8izFhn4b6LP4ab47tpSnVv2Dd9u9S7Fi193aL4QoZLIVxiL3vfXWW3Ts2JGZM2eydu1aJkyYwIwZMzh+/Dienp5UrVqVrl274nLlEKlYsWL89NNPjB49mgkTJhAREUHp0qVp27ZtWptPPvkErTX//e9/AejSpQsLFy5MO/8s8p8jf3iz+YVFNBr2Or+6v8drG19jz7k9zO42G3e7u9XlCSFyidLamquTg4KCdEhIyA1fP3jwIDVr1szDikR+U9R+BpKToW5dOHzYDO4R9M9JjFg3AoCHqj7Eqj6rsNvst3gXIUR+ppTarbUOuna9jE0tRD7gcMDDD5sgrlwZZs6E4S2Gs6HfBjzsHqw7uo4hq4bc+o2EEAWShLEQFtMaRo2CdevM8y+/BPcrPdLtqrRjy4At2JSNWXtm8a/v/0WKI1cGtxNCWEjCWAiLPfRQ+sAeixfDffdlfr1JuSZM6TIFgI93fky/Zf1ITEnM4yqFELlJwlgICyUnw759ZnnmTOjVK+t2Q4KGsL7fegAW/b6IRxY+QqojNY+qFELktnwdxlZdXCasV1T+7e12+PRTGDAAnn325m3bV2nP1qe34uXixfpj6xn23bAi830SorDLt2Fst9uJj4+3ugxhkfj4+OsGLClMkpJg2jRITISePSE4OHvbtarYihW9V+Bic2HGrzN4a9tbEshCFAL5NoxLlSrFmTNniIuLk182RYjWmri4OM6cOUOpUqWsLifXVKoEQ4fCqlW3v23bym35/JHPARizZQxjt4yV/0eEKODy7aAfPj4+AJw9e5bk5GSLqxF5yW63U7p06bSfgcJmyxb4+2+zfOnSnb1H//r9SU5NZtC3gxi/bTw2ZWNM6zEomUlCiAIp34YxmEAurL+QRdGkNTzyiFnu1u3W54lv5tlGz5KqU3l+1fOM2zqO0IuhTH94Oh52j5wpVgiRZ/JtN7UQhdGcOelTIn788d2/3+DGg5n/2Hw87B7M2zePLvO7yFXWQhRAEsZC5JEDB2DgQLP8/vtQoULOvO+TdZ/kl0G/UNqzNFtPbqXnkp4kpSblzJsLIfKEhLEQeeTVV9OXX3opZ9+7Tqk6zOo2C9z8jlwAACAASURBVIDlh5bTa0kvuahLiAJEwliIPLJwIfzrX+airdy4zqpL9S5s7L8RH1cfVh5eycLfF+b8ToQQuULCWIg84u0NkyeDr2/u7aNt5bZM7DARgKHfDWXbyW25tzMhRI6RMBYiF8XFmS7piIi82+egRoPoUr0L0YnRdPiyAxuObci7nQsh7oiEsRC56PXX4cMPoXfvvNunUoplTyyja/WuJKUm0XFeR05eOpl3BQghbpuEsRC55OefYdIksNlgwoS83beLzYXlvZfTpXoXHNrBkO+GyAVdQuRjEsZC5ILoaDMVotYwciQ0bpz3NTg7OTPzkZkUdyvOmtA1BO8JzvsihBDZImEsRA7TGvr3N8ulSsGYMdbVEuAdwMedzegiL37/IofDD1tXjBDihiSMhchh48bBihVmeelScHW1tBz61u1L7zq9iU2Ole5qIfIpCWMhctj27ebrm2+armqrKaWY0nkK/h7+bDmxhcV/LLa6JCHENSSMhchhq1bB+PEwYoTVlaTz8/DjzTZvAvD8quc5fvG4xRUJITKSMBYih7m4wOjR4OlpdSWZDQkaQrd7uxGVGMUTXz8h41cLkY9IGAuRA1JToWlTMytTfj0lq5RiVrdZVPStyK6zuxi5fqTVJQkhrpAwFiIHTJwIu3bB8OFw8aLV1dxYCfcSfNXzK5ydnJn8y2SWH1pudUlCCCSMhbhre/bAf/9rlj/4AEqUsLaeW2lWvhkT2plRSJ5a+hQnLp2wtiAhhISxEHcjLg4aNjTd1MOGpc9XnN+NaDGCrtW7EpscS68lvYhNirW6JCGKNAljIe7C66+br9Wrw//+Z20tt0MpRXD3YCr6ViTkbAivrn/11hsJIXKNhLEQd+j0afj0U7M8alT+u3r6Vvw9/Fn2xDKcnZyZGjKVFYdWWF2SEEWWhLEQdyguzow53aMHPPOM1dXcmYYBDfnP/f8BoP/y/uw8s9PiioQomiSMhbhD99wDP/4Is2dbXcndGddmHL1q9Uqb//jghYNWlyREkSNhLMRt0jr9XmKlwNvb2nrullKK+Y/Np23ltkQnRvPooke5GJ+P788SohDKVhgrpToppQ4rpUKVUqNu0KaNUmqPUuoPpdTWnC1TiPyjYkVwcoI1a6yuJOfYbXaWPr6UeqXrERoZyhNfP0GKI8XqsoQoMm4ZxkopG/Ap0BmoBfRRStW6pk0xYCrwqNa6NtArF2oVwnJr18KpU2Z5ayH7k9PXzZeVvVdS0qMk64+t55V1r1hdkhBFRnaOjJsCoVrrY1rrJGAR0O2aNk8CS7XWfwForcNytkwhrBcVBc8+a5Z79YJ337W2ntxQsVhFlj6xFLuTncm/TGbJH0usLkmIIiE7YVwOOJXh+ekr6zK6ByiulNqilNqtlOqf1RsppQYrpUKUUiEXLly4s4qFsMjLL8OZM9CsGSxcaHU1uef+CvfzRps3ABiwfIBcYS1EHshOGKss1l07FL4z0BjoCnQEXldK3XPdRlrP0FoHaa2DSpYsedvFCmGVdetg5kxwdTVXT9tsVleUu0beP5IeNXsQnxJPz8U9iYiLsLokIQq17ITxaSAww/PywNks2qzRWsdqrcOBbUD9nClRCGs5HPB//2eWx42DmjUtLSdPOCknFvRYQLNyzTgVfYr+y/vj0A6ryxKi0MpOGO8CqiulKiulXIDewMpr2qwAHlBKOSulPIBmgNysKAoFJydYuRKGDDFd1UWFi82Fr3p+RXG34qw+spq3t71tdUlCFFq3DGOtdQrwT2AtJmAXa63/UEoNUUoNudLmILAG2AfsBGZqrX/PvbKFyFv33AOffQbOzlZXkrcqFqvI/Mfmo1CM3TKWjcc2Wl2SEIWS0hbNhB4UFKRDQkIs2bcQ2ZGQAN9+Cz17msE9irKxm8fy5rY38ffwZ+vTW6lVstatNxJCXEcptVtrHXTtehmBS4gbeOstePxxePFFqyux3pjWY2hXuR3hceE8vOBhohOjrS5JiEJFwliILOzbB++9Z46In3zS6mqsZ3OyseyJZdQqWYvjl44zPWS61SUJUahIGAtxDYcDnn8eUlJg6FBo2dLqivIHb1dv3u/wPgDv/PgOF2JlrAAhcoqEsRDXGDMGduyAgAB45x2rq8lfOlfrzENVH+JSwiWeXfms3O4kRA6RMBYig99/h4kTzfKUKeDra209+Y1Sio87fYyvqy/f/vktL68rQvd6CZGLJIyFyOCzzyAxEbp3h8ces7qa/Ole/3vTbneatGOS3H8sRA6QMBYig8mT4YMPYNo0qyvJ37re05XZ3WajULy++XUW7i/Eg3ULkQckjIXIwG6HESOgdGmrK8n/BjQYwNtt30ajGbhiICFnZdwAIe6UhLEQwIoVcO6c1VUUPK898BpDGg8hMTWRhxc8zIlLJ6wuSYgCScJYFHl//GEG96heXQL5TkzuNJkHKjzA+djzPLvyWVIdqVaXJESBI2EsirSUFBg4EJKSoE8fKFPG6ooKHldnVxb3WkxJj5JsOr6JKTunWF2SEAWOhLEo0j74AHbtgsDA9FuaxO0r41WGz7p+BsDL619m0/FNFlckRMEiYSyKrAMHzAAfAJ9/Dj4+1tZT0PWo1YOXW7xMiiOFx5c8zslLJ60uSYgCQ8JYFEkZu6cHDYKOHa2uqHCY0H4CHat2JCI+gj7f9CE+Od7qkoQoECSMRZH0008QEgLly0v3dE6yOdmY99g8ArwC2H56O8+vet7qkoQoECSMRZHUurUZf3rePBnyMqf5e/jz3ZPf4e7szpf7vmTmrzOtLkmIfE/CWBRZTZqYUBY5r2FAQz7p/AkAL6x+gVNRpyyuSIj8TcJYFCnjxsH8+aC11ZUUfs80fIYu1buQlJrEc98+h5ZvuhA3JGEsiowffoA334QBAyA01OpqCj+lFF88+gUl3Euw9uha3tr2lgSyEDcgYSyKhLg4eOYZc0T82mtmtC2R+8p4lWFyx8kAjNkyRqZcFOIGJIxFkfCf/5ij4bp14fXXra6maOlXvx8LHluAk3Liwx0fErwn2OqShMh3JIxFobdlC3z8MdhsMHs2uLhYXVHR06duH6Z0NsNkjlg7gguxFyyuSIj8RcJYFGoxMfDss6Z7evRoaNzY6oqKriFBQ3iw0oNcTLjIU8uekgklhMhAwlgUaufOmTmK69c3XdXCOkop5nSfg7+HP+uOrmP8tvFWlyREviFhLAq1atXg119h5Urpns4PAn0DWfDYAhSKN7e+yZI/llhdkhD5goSxKJSiotLvJfbwgAoVrK1HpOtQtQPvtHsHjeaZlc/w69+/Wl2SEJaTMBaFTnw8tG1rbmVKSLC6GpGVkfeN5Kl6TxGTFEPXBV05F3PO6pKEsJSEsSh0/u//TNf0li2QmGh1NSIrSilmPjKTByo8wLmYczy19Ckc2mF1WUJYRsJYFCorV8LMmeb88IoVMglEfubq7MpXPb+ihHsJNh7fyML9C60uSQjLSBiLQuPHH6FXL7P8zjtQr5619YhbC/AOYEK7CQCM3jya2KRYiysSwhoSxqJQ+PtvePxxSEoyX4cPt7oikV1PN3iaOqXqcOLSCQYsHyDd1aJIkjAWhcJrr5lAbtUKvvwSnOQnu8Cw2+wseGwBXi5efHPwG0auH2l1SULkOfmVJQqFqVNh7FhYtEjuJy6I6pauy5JeS7ApGxO3T+SdH96xuiQh8pSEsSjQHFd6ND08zFzFAQGWliPuQqdqnfhfh/8BMGbzGL778zuLKxIi70gYiwIrNBTuu8+MPy0KhxEtRjCk8RBSdSrdv+rOvvP7rC5JiDyRrTBWSnVSSh1WSoUqpUbdpF0TpVSqUqpnzpUoxPXi4syV0zt2wKRJVlcjctKnXT9lYIOBpDhSeHblsySmyM3iovC7ZRgrpWzAp0BnoBbQRylV6wbt3gPW5nSRQmSkNQwZAnv2mLGnX3zR6opETnJSTkzuNJlAn0BCzoYweNVg9NWxTYUopLJzZNwUCNVaH9NaJwGLgG5ZtHsR+AYIy8H6hLjOxInmimkPD1i2DIoVs7oikdN8XH1Y0XsFHnYP5u6dyyc7P7G6JCFyVXbCuBxwKsPz01fWpVFKlQP+AUy72RsppQYrpUKUUiEXLsjk4uL2BQfDq6+a5dmzoU4dS8sRuahhQEM+fOhDAIavHc6m45ssrkiI3JOdMFZZrLu2z2gyMFJrfdPZwrXWM7TWQVrroJIlS2a3RiEACAmBQYPM8kcfmcE9ROE2uPFgXmz6Ig7toOfinuw/v9/qkoTIFc7ZaHMaCMzwvDxw9po2QcAipRSAP9BFKZWitV6eI1UKATRqBP/+N7i5mckgROGnlGJSx0kcvXiU1UdW88TXT/Db87/h6uxqdWlC5Ch1qwsjlFLOwJ9AO+AMsAt4Umv9xw3aBwOrtNZf3+x9g4KCdEhIyJ3ULIo4rUFl1V8jCq3YpFgazWjEnxF/MqD+AGZ3m42SHwJRACmldmutg65df8tuaq11CvBPzFXSB4HFWus/lFJDlFJDcr5UIdJFRcHzz8OpDFctyO/gosfTxZOFPRbiYfdgzt45/O+n/1ldkhA56pZHxrlFjozFrSQlQZcusHEjNGkCv/wiQVzULTu4jMcWPwbA+n7raV+lvcUVCXF77vjIWAgrXL2XeONGKFUKvvpKgljAP2r+g9EPjAag99e9iYiLsLgiIXKGhLHIl955x9y65O4O334LlStbXZHIL8a1GUebSm2IiI9gxLoRVpcjRI6QMBb5zsKFMHq0ORKePx+aNrW6IpGf2JxsTO0yFXdnd+buncs3B76xuiQh7pqEschX/vwTnnnGLH/wAfzjH9bWI/KnmiVrps3w9OzKZ9lzbo/FFQlxdySMRb5SvTq8+y688IK5p1iIG3mhyQs8VvMxohKjaDe3HSFn5YJQUXDJ1dQiX0hNBZvN6ipEQRObFEvPJT1ZE7oGfw9/Dgw7QElPGd1P5F9yNbXIt/buBWdn00UtxO3wdPFkRe8VtK7YmvC4cJ5e8TQpjhSryxLitkkYC0udOQN9+pjl8eOtrUUUTC42F+b+Yy7F3Iqx+shqei3pJXMgiwJHwlhY5u+/oX17OHjQPH/nHWvrEQVXBd8KrH5yNR52D5YfWs5/N/3X6pKEuC0SxsISBw5A2bJw6BDUrQvh4RAYeOvthLiRFoEtWPr4UgA+2P4Ba0PXWlyRENknYSzy3E8/Qe3aZrlRIzPKlp+ftTWJwqFjtY68dv9rAPT5pg8nL520uCIhskfCWOS58PD05bVrQaa2Fjlp/IPjaV2xNRcTLtJlQRdOR5+2uiQhbknCWOS5bt1gxgyIjwd/f6urEYWNzcnGgh4LKO9TngMXDlBjSg25B1nkexLGItc5HGZ4y+3b09c99xy4uVlXkyjcynqXZeegnTQo04DY5Fi6zO/C2ctnrS5LiBuSMBa5KjkZ+veHt9+G7t0hJsbqikRREeAdwPZnt9O8fHMuxF3gmRXPYNUgR0LcioSxyDWRkWY+4vnzwdMT5s4FLy+rqxJFiZuzG1/3+poS7iVYe3Qt/14jY6yK/EnCWOSKffugYUPYsMHMR7xpE3TsaHVVoigq51OOud3nYney8/HOj3lx9Ys4tMPqsoTIRMJY5Ljly6FlS/jrL2jSBH7+WaZBFNbqek9X3mr7FgBTdk3h3R/etbgiITKTMBY5rnhxSEiAp56CrVuhalWrKxICXmn5CjMengHA6M2jGbJqCKmOVIurEsKQMBY5Ijo6fbl1awgJMeeI3d2tq0mIjJRSPNf4OT7t8imuNlem755OmzltiEqIsro0ISSMxd379ltz9LtyZfq6Bg1AKetqEuJGhjUZxvd9v6esd1l+/OtHui3qRlxynNVliSJOwljcsehoePFFePRRM6rW4sVWVyRE9jxY+UF+HPgjJT1KsvXkVoZ9N0xuexKWkjAWd2TTJqhTB6ZMMXMRT5xouqWFKCgqF6/Mhv4bcHd2Z87eOXz+6+dWlySKMAljcVsSE6FfP2jXDk6dMldJ//ILvPQSOMlPkyhg6pWux0edPgLgxe9fZMfpHRZXJIoq+fUpbktSkpl1yWaDsWPNcqNGVlclxJ17rvFzDAsaRlJqEt0XdedSwiWrSxJFkISxuKXERIi7cn2Ltze8/765aGvcONNFLURB91Hnj2hRvgXnY8/T4osWnIo6ZXVJooiRMBY3pLUZwKN2bXj55fT1PXpA587W1SVETnN2cmZO9zlULV6VQ+GHaB3cWuZCFnlKwlhk6cQJM9XhP/4BR4/C5s0yyYMo3Kr7VWfXc7toWq4pxy8dp8OXHQiLDbO6LFFESBiLTBIS4M03oVYt0xXt7Q0ffwz798skD6LwK+5enHVPraN+6fociTxCu7ntCI8Lt7osUQRIGIs0ly+b25XGjoX4eOjTBw4dMvcSy7lhUVT4uvmy9qm11PSvye9hv9N+bns5Qha5TsJYpPH2NhM81KkDW7bAggVQtqzVVQmR90p7lWbTgE1UKlaJvef30vTzphyNPGp1WaIQkzAuwkJDzWQO69alr5syBX77zYwvLURRVsarDD8/8zO1S9bmZNRJ2sxpw84zO60uSxRSEsZF0Llz8PzzULMmzJ8Pb7yR/pqPj3RJC3FVgHcAPz3zE/cF3sfp6NM8MPsBpodMl6EzRY6TMC5CoqLgnXfgnntgxgxwOGDgQNMdLYTImq+bL+v6reO5Rs+RlJrEkO+GMPS7oTL9oshR2QpjpVQnpdRhpVSoUmpUFq/3VUrtu/L4WSlVP+dLFXdj3ToIDIT//tdcqPXww/DHHzBrFlSsaHV1QuRvHnYPZjwygymdp+Bic2H67un846t/kJiSaHVpopC4ZRgrpWzAp0BnoBbQRylV65pmx4HWWut6wHhgRk4XKm5fXIZZ4Zo2BVdXaNMGNmwwty3VqGFZaUIUSC80fYFVfVZR3K043/75Ld0WdSM+Od7qskQhkJ0j46ZAqNb6mNY6CVgEdMvYQGv9s9b64pWnO4DyOVumyC6tYeNG6NnTHPHGxpr1xYrBwYNm8I527aytUYiCrEPVDmx5egslPUqy9uhaui7oKvcii7uWnTAuB2QcqPX0lXU38izwfVYvKKUGK6VClFIhFy5cyH6V4pYiImDSJHO02749fPMNXLwIP/+c3sbf37r6hChM6pWux9antxLgFcDmE5sp+0FZRm0YRYojxerSRAGVnTBWWazL8lJCpdSDmDAemdXrWusZWusgrXVQyZIls1+luKGrUxqWKwcjRsCff5p7g8eNg5MnoUMHqysUonCqWbIm2wZuo32V9qQ4Unjvp/doP7c952POW12aKICyE8angcAMz8sDZ69tpJSqB8wEummtI3KmPJGVkxnGr3d1NaNkJSZCx46wdKl5fexYE9BCiNxTrUQ11vdbz7aB2yjjVYatJ7fSeEZjdp/dbXVpooDJThjvAqorpSorpVyA3sDKjA2UUhWApUA/rfWfOV+mOHUKPvzQXIhVqRL8/nv6a59+CseOwZo1ZmIHuU9YiLx1f4X7+XXwr9xf4X7OXD5D27ltCd4TLPcji2y7ZRhrrVOAfwJrgYPAYq31H0qpIUqpIVeajQH8gKlKqT1KqZBcq7iI0Br27oW33oJmzaBCBXjpJdi1y0zYcOBAetumTaFyZetqFUKYAUI29t/IE7WfIDoxmoErBhLwQQDrjq679caiyFNW/eUWFBSkQ0IkszNKSUk/qk1JgVKlzEVYYLqjH3kEHn/c3CPs7m5dnUKIG3NoBzN2z+CF1S/g0A4ARt03ilH3j8LXzdfi6oTVlFK7tdZB162XMLbW33/D99+b+363bTPzCHt7m9dGjIDoaBPC7duDp6elpQohbkNsUixjNo9h0o5JaDSedk+mdp1K//r9rS5NWEjCOJ+IjzejYa1bZ+4HPnw48+tr18JDD1lTmxAi5/3010+8tvE1fvjrB8AcJb/54JvYbXaLKxNWkDC2yOnTcOaMOe8L5kg447SEHh5mVKxHHoGuXc2QlUKIwueDnz/g1Q2v4tAOGpRpwJf/+JI6pepYXZbIYxLGeSA2FkJC4JdfYMcO8/XsWTMS1okT6e0GDIAqVcw9wE2agF3+QBaiSNh4bCODvh3EiUsncLG5ENwtmD51+1hdlshDEsY5zOGApCRwczPPp0+HYcPM+oyKFTNXO69Ykd5WCFF0xSTF8Ny3z7Ho90UAtAxsybSu06hbuq7FlYm8cKMwlikUsyE+HvbsMVMNjhplLqYqXhw++SS9TZUqoBQ0bAhDh0JwsBmMIyLCnAeWIBZCAHi5eLHgsQVM6zqNYm7F+PnUz9w36z7WhK6xujRhITkyziA1Ff76K/M9uw8+CFu3mvt+r/XsszBzpllOSjK3I3l45E2tQoiCLyYphmdWPMOSA0sAeLrB07zf4X38PWQg+cLqRkfGRXKspuhoc2732DE4etSM5xwaar4mJEB4OPj5mbZ+fuDkBNWrm0kY6tWD+vWhefPMF2K5uJiHEEJkl5eLF4t6LqLGlhq899N7BO8J5tvD3zKlyxR61+ltdXkiDxXKI+PYWBO0V8P26FFz3nbAAPP65s3Qtm3W25Yta7qV61y5yPHCBfDxMYNuCCFEbvkz4k+GfjeUTcc3AfBKy1d49b5X5Si5kCk0F3A5HBAWZsZqPn0aunUzR64A/fub8Zmzmp2xd29YuNAsnz4NffqY87xVqsA990DVqnDvveArA+QIISyitWbyjsmMWDcCgLLeZfm619e0CGxhcWUip+T7bmqHw1zs9PffJhArVjTr9+yBCRPMLUJnzpggTUpK3+7sWQgIMMuXL5sgdnU1532vhm3VqtC4cfo25cvDDz/k3WcTQojsUEoxvMVwapWsxcgNI9l7fi+tglsxres0nmn4DEplNaOtKAwsOzIuXTpIN2wYwvnzcP68OdpNTTWvjRgBH3xgln/4AVq1yrytn58ZHCMw0FzRfDW4T5409+yWKZN+tCyEEAVRfHI8r6x/hU93fQrAfYH38XHnj2kU0MjiysTdyHfd1J6eQTouLnM3dfHiJkifegr+8x+zLjISVq82c/NefcgYzUKIokBrTfCeYEZtHEVYbBgKRd96fZnSeYpMOlFA5bswvueeID15cgilS0Pp0maGIrkaWQghrheVEMVb295i4vaJAPi5+/FKy1d4sdmLeNjlfsqCJN+FcX68z1gIIfKzvef2MnDFQH479xsAAV4B/KvZv+hTtw8VfCtYXJ3IDhmBSwghCrj6Zeqze/Bu1vRdQ6OARvwd8zejNo6i4uSKPLviWWKTYq0uUdwhCWMhhChAlFJ0rNaRkOdC+L7v93Sv0R1Xmyuz9syi8keV+XLvl6Q6Uq0uU9wm6aYWQogCbt/5fQxaOYhdZ3cBpvu6b92+DGw4kFola1lcnchIzhkLIUQhprXm012f8tEvHxEaGZq2vl3ldvSq1Ysn6z6Jt6u3hRUKkDAWQogiQWvN9tPbCd4TzLx984hPiQegmFsxhgYNZWjQUAJ9Ay2usuiSMBZCiCImIi6CZYeW8fEvH7M/bD9gJqf4qNNHDGwwUEb0soCEsRBCFFFaa9YfW8/UXVNZcXgFAFWKV+H1Vq/ToUoHyvmUs7jCokPCWAghijitNfP3z2fod0OJSYpJW9+kbBMevfdRetfpTbUS1SyssPCTMBZCCAGYca+/3Pclyw4tY+uJrWnnlQFalG9B7zq96V6juwwkkgskjIUQQlzncuJlvtz3JRuObWBN6Jq0YLYpG73r9GZQo0E8UOEBbE42iystHCSMhRBC3FRsUiwrDq9g4e8LWfXnqrT1fu5+tKvSjjYV29C6Umvu9btXwvkOSRgLIYTItsPhhwneE8zXB7/OdN8ymCuyGwc0pmVgS4Y1GUZ5n/IWVVnwSBgLIYS4bVprjkQeYfPxzWw+sZntp7fzV9Rfaa87OznTumJrRt0/iublm+Pl4mVhtfmfhLEQQogccS7mHCFnQ5iycwprj65NW293snN/hfvpWLUjXe/pSp1SdSysMn+SMBZCCJHjjkQcIXhPMGuOrmHPuT04tCPttfI+5WlYpiEtyrcgqGwQFXwrUMG3Au52dwsrtpaEsRBCiFwVERfB+mPr+T70e1YeXsmlhEvXtXFSTlQrUY26peqaR2nztWqJqjipwj+RoISxEEKIPJPqSOXoxaPsPLOT7ae2sy9sH2cvn+XkpZOk6uuneKzoW5Fm5ZtRu2RtAn0CKeVZigq+FahdqnahCmkJYyGEEJZLTEnkYPhB9p/fz/4w89h9djcX4i5k2d7bxZtyPuUo612WGn41qFOqDrVK1qJmyZqU9ChZ4MbXljAWQgiRL6U4Uth9djcHww9yKPwQZy6f4ULsBfaH7efs5bM33K6EewmqlahGleJVuKfEPWlBXdKzJL6uvrg6u+bhp8geCWMhhBAFitaaiPgIzsec5+jFoxwOP8yB8AMcvHCQAxcOcDnp8k23d7W54uvmi4+rD76uvvi6+Wb+6nrltWvXZ9jGw+6Ro0ffNwpj52xu3An4CLABM7XWE655XV15vQsQBzyttf71rqsWQghRZCml8Pfwx9/Dn9qlasO96a9prTkXc45jF49x9OJRDlw4wJ5zezh28RiR8ZFEJUaRmJpIWGwYYbFhd1yDs5NzpjD3cfVJe3i7eOPt4o2Xi1emh7vdHWcnZ+xOdvPVZk97fsP9ZOObYQM+BToAp4FdSqmVWusDGZp1BqpfeTQDPrvyVQghhMhxSikCvAMI8A7gvgr3Xfe61pqElASiEqOISohK+xqdGH3duqhE84hOjL5ufUJKApHxkUTGR+bq58nOkXFTIFRrfQxAKbUI6AZkDONuwFxt+rx3KKWKKaUCtNZ/53jFQgghxC0opXC3u+Nud6eMV5k7fp+k1KTrQjo6MZrLSZe5nHiZmKSYTI/LSZeJT4knxZFCcmqy+epITnu+i11Z4hWxQAAACdBJREFU7ic7YVwOOJXh+WmuP+rNqk05IFMYK6UGA4OvPI1RSh3Oxv5ziz8QbuH+rSafv+h+/qL82UE+v3x+az9/xaxWZieMszpzfe1VX9lpg9Z6BjAjG/vMdUqpkKxOohcV8vmL7ucvyp8d5PPL58+fnz87d1KfBgIzPC8PXHuteXbaCCGEECIL2QnjXUB1pVRlpZQL0BtYeU2blUB/ZTQHouR8sRBCCJE9t+ym1lqnKKX+CazF3No0S2v9h1JqyJXXpwGrMbc1hWJubRqYeyXnmHzRXW4h+fxFV1H+7CCfXz5/PmTZoB9CCCGEMArP6NtCCCFEASVhLIQQQliswIexUupFpdRhpdQfSqn/ZVj/mlIq9MprHTOsb6yU2n/ltY+vDOWJUspVKfXVlfW/KKUqZdhmgFLqyJXHgAzrK19pe+TKti5586kzU0q9rJTSSin/DOsK9edXSr2vlDqklNqnlFqmlCqW4bVC/dnvhlKq05XvS6hSapTV9dwOpVSgUmqzUurglf/f/3VlfQml1Por/xbrlVLFM2yT6z8LeUkpZVNK/aaUWnXleVH67MWUUl9f+f/+oFKqRaH6/Pr/2zv/GLmqKo5/vunaNgKFtli6Agr7Bw2gsW1ArbS4AiG4qU0MGpeERGmM8iMkamIB648KQtI2kmJMbA1JK+xCKAVsINU2JZQfgoXatGpiF7qwSIGiUKpCQwV6/OOeybx9ndndcdl5OzPnk7y8+8679809973ZM+/cu+eYNewGfAHYCkzy4xm+PwvYDUwCTgf6gQl+7mlgHul/o38HfNHlVwOrvdwN3OPlacDzvp/q5al+bj3Q7eXVwFUFjMGppMV1LwIntor+wMVAm5eXA8tbRfdRjNkEH48OYKKP01lF96uG/rcDc718HPCs3+8VwPUuv77ez0Kdx+B7wF3AQ37cSrr/BvimlycCJzST/oV/wUZ5c9YDF1WQ3wDckDne7IPfDuzJyC8D1mTreLmNFKFF2Tp+bo3L5HVKBmEesLmAMdgAfAoYoGyMW0Z//+wvA72tqHuN4zSon/mxarQN2EiKmd8HtLusHeir17NQZ31PAR4GLqBsjFtF9ynAC/ii44y8afRvdDf1GcACdyk8Kulcl1cLz3myl/PyQW3M7D3gX8D0Ia41HTjodfPXqguSFgEvm9nu3KmW0D/DYtIvXGg93Wuhmj4Nh7sQ5wDbgZPM4xr4foZXq8ezUE9WAUuAIxlZq+jeAfwTWOtu+tslHUMT6T+iFIpFImkrUCnK91JS/6cCnwXOBdZL6qB6eM6hwnbW2mZEIUBHyzD6/4Dkrj2qWQVZw+k/lO5mttHrLAXeA3pLzar0q6F0HyMatd+DkHQscB/wHTP7t6rnmq3Hs1AXJC0E/mFmf5LUOZImFWQNqbvTBswFrjWz7ZJuI7mlq9Fw+o97Y2xmF1U7J+kq4H5LvoOnJR0hBQGvFp5zn5fzcjJt9klqA44HDri8M9dmG8mFcYKkNv8VNSYhQKvpL+mTpLmQ3f7H6BRgp6RP0yT6D3XvIS2qABYCF/ozAE2i+xjR8GFrJX2IZIh7zex+F78mzxInqR0oJa+tx7NQL84DFknqAiYDUyT10Bq6l/q2z8y2+/EGkjFuHv3r6fcfg3mEK4EbvXwGyZUg4GwGT94/T3ny/hnSm3Rp8r7L5dcwePJ+vZenkeYqpvr2AjDNz93L4EU8Vxc4FgOU54ybXn/gElIaz4/k5E2v+yjGrM3H43TKC7jOLrpfNfRfwB3Aqpx8JYMX8ayo57NQwDh0Up4zbhndgceBWV5e5ro3jf6Ff8FGeXMmAj3AX4GdwAWZc0tJK+j68NVyLj/H6/cDv6QchWwy6Q/sXtJqu45Mm8Uu3wtckZF3eN293nZSgWMxgBvjVtDfP/MlYJdvq1tF91GOWxdpFXI/yd1feJ9q6Pt8knvwz5n73kWa13sYeM730zJtxvxZKGAcOikb45bRHZgN7PD7/1uSYWwa/SMcZhAEQRAUTKOvpg6CIAiChieMcRAEQRAUTBjjIAiCICiYMMZBEARBUDBhjIMgCIKgYMIYB8EYoJRFa7htwOuuk7RvmEvWBUkDHkzig7zeuhHUW1cajyBoRcZ9BK4gaFDm5Y4fIAUhWJaRHa5bb4IgGNeEMQ6CMcDM/pg9lnQYeD0vHy2SJplZGPUgaHDCTR0E4wRJcyQ9LumQJzG/Mnf+G+7ePl/SvZIOkrIWIanNk6nvkXRY0iuSfi5pcqZ9m6SbJPVLekfS65KekDS/Ql+6PYH725J2VKlzuaTdmWvd6fGBh9PzQkk7vV2/pG//XwMWBE1EvBkHwfhgCilp/CrgRuAK4FeS+szskVzdXuBu4CuUv8M9wJeA5cCTwJnATcBpwKVe5zrgu6Qwgbv8M88hxd7NsgCYBfwIeMev85Ck08zsIICkb5Hyut5Dyh37UeAW4DOS5prZW5WUlHQmsIkU1rCbFDt4GXAs8P6woxQETUoY4yAYHxxHSjbxCICkx0jpMS8D8sZ4g5ktKR1IWgB8Dfi6md3h4q2SDgA9kmab2S7SPPYWM7stc60HK/RlCjDbzN706+8nBdfvAu6SNIFkoLeZWXemH3tIwfwXA7+ooucPgf8AF5vZ297uSVKc4IbKIBUEHyThpg6C8cGh7BuwzwM/B3ysQt0HcseXAP8F7nNXdJungNvi58/3/TNAl6SbJc2XNLFKX54qGWLnL74v9WUWKYl7b7aRmT0BvAh8vpqSpB8Em0qG2Nu9BPxhiDZB0PSEMQ6C8cGbFWSHSZlk8ryaO55BymD2FvBuZivldp3u+1uAnwCLSG+wb0haK+nE3PUOZA8yC8RKfSm5tfP9ANjP0W7vLO3AaxXklWRB0DKEmzoIGo98qrU3SHO7C6rUfwXAzN4lzSkvlzQTWAjcCnyY5OYeKSVjPbPCuZmk+eBqvAqcVEFeSRYELUO8GQdB4/N70lvr8Wa2o8J21Fysme03s9uBrcAnavy8PtKbbHdWKOlzwMeBR4do+xTJVX5Mpt2pwHk19iEImop4Mw6CBsfMtkm6G9gg6VZSYvQjpJXUXcB1ZvaspI2kwCM7SW7xOaT55jU1ft77kn4MrPFoXT3AycDNpHnutUM0/xnwVWCLpJUk9/pPCTd10OKEMQ6C5uBy4FrSSualpPnmAWAzZUP3GMkQXkNyTf8dWEEyojVhZr+WdAj4PrCRNF+9CVhS7d+avN3fJHUBK0n/FvUyyXU+D+istR9B0CzILD/9FARBEARBPYk54yAIgiAomDDGQRAEQVAwYYyDIAiCoGDCGAdBEARBwYQxDoIgCIKCCWMcBEEQBAUTxjgIgiAICiaMcRAEQRAUzP8AtIWtx/q9eHYAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用matplotlib 绘制精度和召回相对于阀值的函数图\n",
    "def plot_precision_recall_vs_threshold(precisions, recalls, thresholds):\n",
    "    plt.plot(thresholds, precisions[:-1], \"b--\", label=\"Precision\", linewidth=2)\n",
    "    plt.plot(thresholds, recalls[:-1], \"g-\", label=\"Recall\", linewidth=2)\n",
    "    plt.xlabel(\"Threshold\", fontsize=16)\n",
    "    plt.legend(loc=\"upper left\", fontsize=16)\n",
    "    plt.ylim([0, 1])\n",
    "\n",
    "plt.figure(figsize=(8, 4))\n",
    "plot_precision_recall_vs_threshold(precisions, recalls, thresholds)\n",
    "plt.xlim([-700000, 700000])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "def plot_precision_vs_recall(precisions, recalls):\n",
    "    plt.plot(recalls, precisions, \"b-\", linewidth=2)\n",
    "    plt.xlabel(\"召回\", fontsize=16)\n",
    "    plt.ylabel(\"精度\", fontsize=16)\n",
    "    plt.axis([0, 1, 0, 1])\n",
    "\n",
    "plt.figure(figsize=(8, 6))\n",
    "plot_precision_vs_recall(precisions, recalls)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 通过选择阀值来实现最佳的精度/召回率权衡"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 目标设定为90%的精度，阀值大概在30000左右 , 设置了阀值为30000\n",
    "y_train_pred_90 = (y_scores > 30000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9066481994459834"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "precision_score(y_train_5, y_train_pred_90)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6037631433314886"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, y_train_pred_90)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 总结\n",
    "* 获得了一个90%精度的分类器，但如果召回太低，精度再高，也不怎么有用\n",
    "* 如果工作中，需要99%的精度，你应该回应，召回率是多少？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ROC 曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 本质是 真正类率tpr和假正类率fpr（错误的分为正类的负类实例比例）\n",
    "# 与召回/精度曲线非常相似"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_curve\n",
    "\n",
    "fpr, tpr, thresholds = roc_curve(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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koiIuIg7JvLV8cy31mKMYfjw4cTExPD3v/8dr9frdFkiIuIyrmjp11WBQIAHH3yQwYMHY62lTZs23HLLLQp8ERGpEa4I/brY0N++fTtnn302N998M4FAgKIid01GFBGR2scVoV/XLFy4kPT0dJYsWcJTTz3Ff//7X+Lj3TEZUUREai9XjOnXpUH9goICRo8eTcOGDVm0aBGdOnVyuiQREYkQrgj9uhD5GzdupHnz5iQkJPD2229z7LHHkpCQ4HRZIiISQdS9HwYvvPACnTp14v777wegc+fOCnwREQk7V4R+be3dz8/PZ+zYsQwdOpSOHTty8cUXO12SiIhEMHeEfi3s4P/yyy/JzMxk+vTp3HbbbSxZsoRjjjnG6bJERCSCuWJMvzYqLCykoKCARYsW0bdvX6fLERERcUlLv5Y09Hft2sX06dMB6N69O2vXrlXgi4hIreGO0He6AOCDDz6ga9euXHXVVfz8888AxMTEOFuUiIjIflwR+k7y+XxMnDiRM844g/j4eD799FON3YuISK3kijF9p7r3rbX88Y9/5K233mLkyJE8/vjjJCUlOVOMiIhIBdwR+g518BtjuPjiixk2bBgjR450pAYREZHKckXoh1NRURE33XQTGRkZjBkzhhEjRjhdkoiISKW4Y0w/TA39NWvW0KNHDx577DF++OGH8FxURESkmriipV/TmW+tZcaMGVx77bUkJCTwxhtvcPbZZ9fwVUVERKqXO1r6NWzFihVcdtll9OjRg6ysLAW+iIjUSe5o6dfQ9P2dO3eSlpbGSSedxIIFCzjzzDPxer01ci0REZGa5oqWfnVHfiAQ4IEHHuCYY45h+fLlAJx11lkKfBERqdNc0dKvTtu3b2fUqFEsXLiQCy64gOOOO87pkkRERKqFO1r61dTUX7hwIenp6XzwwQc89dRTvPTSS6SmplbPyUVERBzmipZ+dYX+p59+SqNGjVi8eDEdO3asnpOKiIjUEq5o6R+Jn376iY8//hiA8ePHs3z5cgW+iIi4kitC/3C34Z07dy5du3Zl7Nix+P1+vF4v8fHx1VydiIhI7eCO0K9i5ufn53PppZdy8cUX07lzZxYsWKCZ+SIi4nquGNOvip07d3L66afz/fffM378eO68806ioiLubRARkQgUcWnXqFEjzjjjDJ588knOOOMMp8sREREJG5d07x+6f3/X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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "def plot_roc_curve(fpr, tpr, label=None):\n",
    "    plt.plot(fpr, tpr, linewidth=2, label=label)\n",
    "    plt.plot([0, 1], [0, 1], 'k--')\n",
    "    plt.axis([0, 1, 0, 1])\n",
    "    plt.xlabel('假正类率', fontsize=16)\n",
    "    plt.ylabel('真正类率', fontsize=16)\n",
    "\n",
    "plt.figure(figsize=(8, 6))\n",
    "plot_roc_curve(fpr, tpr)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9600180528955017"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算曲线下面积AUC，虚线是随机分类0.5到1\n",
    "from sklearn.metrics import roc_auc_score\n",
    "\n",
    "roc_auc_score(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 召回率TPR越高，分类器的假正类FPR就越多\n",
    "* 虚线表示纯随机分类器的ROC曲线，好的分类器应该远离这条线，向左上角\n",
    "* 是使用精度/召回率 PR曲线，还是使用ROC，关键在于 正类非常少或者更关注假正类而不是假负类，选择PR，反之ROC\n",
    "* 例如：前面例子ROC曲线很不错是因为跟负类 非5 相比， 正类 数据5 数量真的很少"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练随机森林分类器，比较SGD分类器的ROC曲线和ROC AUC分数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 获取训练集中每个实例的分数\n",
    "* RandomForestClassifier 没有descision_function(),但是拥有dict_proda()方法，sklearn中分类器都有这两个中的一个\n",
    "* dict_proda返回一个矩阵，每行一个实例，每列代表一个类别的概率，比如这个图片 70%是5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "G:\\Python37\\lib\\site-packages\\sklearn\\ensemble\\weight_boosting.py:29: DeprecationWarning: numpy.core.umath_tests is an internal NumPy module and should not be imported. It will be removed in a future NumPy release.\n",
      "  from numpy.core.umath_tests import inner1d\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "forest_clf = RandomForestClassifier(n_estimators=10, random_state=42)\n",
    "y_probas_forest = cross_val_predict(forest_clf, X_train, y_train_5, cv=3,\n",
    "                                    method=\"predict_proba\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1. , 0. ],\n",
       "       [1. , 0. ],\n",
       "       [0.9, 0.1],\n",
       "       ...,\n",
       "       [1. , 0. ],\n",
       "       [1. , 0. ],\n",
       "       [1. , 0. ]])"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_probas_forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 绘制ROC曲线，需要决策值不是概率，直接使用正类的概率作为决策值：\n",
    "y_scores_forest = y_probas_forest[:, 1] \n",
    "fpr_forest, tpr_forest, thresholds_forest = roc_curve(y_train_5,y_scores_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0. , 0. , 0.1, ..., 0. , 0. , 0. ])"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_scores_forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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ryOJiASVgG/pN2kCL77odQopCq1bt6ZXr14kJCSo4IuIFIOAL/oS2JYvX87f//53jhw5QrVq1Zg2bRo1a9b0OpaISFAK+KKfmup1AjkZPp+PRx99lPbt27N69Wq2bt3qdSQRkaAX8EV/3Tro39/rFFIYW7du5fLLL+fhhx+mV69erFq1ioYNG3odS0Qk6AX8QL7UVPj5Z69TSGH07t2bVatWMX36dPr166eZ9URE/CTgi37TpvD++16nkPykpKTg8/koV64cL7/8MqGhoZx77rlexxIRKVUCvns/IsLNvy8l108//cSFF17I3XffDcD555+vgi8i4oGAL/pScllrmT59Oi1btmTz5s10797d60giIqVawBf9TZvgjTe8TiE5JSUlcfPNNzNw4EBatWpFQkICV199tdexRERKtYAv+rt2weLFXqeQnP766y8WLFjAo48+yqJFi6hbt67XkURESr2AH8hXvz707u11CgFIT0/n/fffp3v37jRs2JDffvuNKlWqeB1LREQyBHxLPyoKNGOr93bu3MlVV13FDTfcwPz58wFU8EVESpiAb+mL9xYtWkTfvn3Zu3cvL730EldddZXXkUREJBcB39JPSoL1671OUXo99dRTdOnShapVq7Jy5UruuOMOTbYjIlJCBXzR/+UXeO45r1OUXi1atGDQoEHExcVxwQUXeB1HREROIOC79ytWhMaNvU5Rurz11lts3LiRYcOG0blzZy2DKyISIAK+pX/OOXDPPV6nKB0OHjzIbbfdRs+ePZk3bx5paWleRxIRkULwe9E3xkw1xnxtjBmVx/OVjTGfGGMWGmPeM8aE+zujHG/NmjXExsYydepURowYwdKlSylTJuA7ikREShW/Fn1jzPVAqLW2LXCmMaZRLrv1ASZZa7sA24FuJzpmamrR55Rj7d27l0suuYR9+/bx2WefMX78eMLCwryOJSIiheTvln4H4K2MxwuBS3LuYK19yVr7WcaPNYCdOfcxxtxujIkzxsStWQPXX19ccUu3w4cPA1C1alVmzJhBQkICnTp18jiViIicLH8X/fLA1ozHe4A818czxrQFqlprv8n5nLV2irU21lobC3DWWcURtXRbvnw55557LvPmzQOge/fuREVFeZxKREROhb+L/gGgbMbjCnmd3xhTDXgeuCW/A8bEwBNPFFm+Us/n8zFu3Djat29PeHi45swXEQki/i768WR16UcDf+TcIWPg3tvACGvtxvwOaAxoPFnR2LJlC506dWLMmDH07t2bVatWERsb63UsEREpIv4u+u8DfY0xk4AewFpjzGM59rkViAFGGmM+N8b09HPGUmvJkiXExcUxY8YMZs2aRaVKlbyOJCIiRchYa/17QmOqAp2B/1lrt5/q8apWjbUvvhjHTTederbSKCUlhVWrVtG2bVustfz555/UqVPH61giInICxpj4zHFtheH3+/SttXuttW8VRcEH2LcP1q4tiiOVPj/99BMXXnghnTt3ZteuXRhjVPBFRIJYwM/Id+aZ0Lu31ykCi7WW6dOn07JlSzZv3szcuXOpUaOG17FERKSYBXzRr1oVmjb1OkXg8Pl89O3bl4EDB9KqVSsSEhK4+uqrvY4lIiJ+oHHvpUxoaChRUVE8+uijjBgxgtDQUK8jiZQ4Lj/VpQAAHHJJREFUSUlJ7Ny5k1RN+Sl+FhYWRlRUVLENpA74or97N6xeDc2be52k5EpPT2fSpElceumltGnThkmTJnkdSaTESkpKYseOHdStW5eyZctijPE6kpQS1loOHz7M1q1uDrviKPwB372/cSNkTBonudixYwdXXnklw4YNY86cOV7HESnxdu7cSd26dSlXrpwKvviVMYZy5cpRt25ddu48bgb6IhHwLf3TTlMrPy8LFy6kX79+JCYmMnnyZAYPHux1JJESLzU1lbJly+a/o0gxKVu2bLFdWgr4on/GGfC3v3mdouRZvHgxXbt25fzzz2fRokU01WhHkQJTC1+8VJz//gK+e1+O5fP5AOjQoQNPP/00K1euVMEXEREgCIp+WhocOuR1ipLhzTff5Pzzz2f79u2EhoZy//33U65cOa9jiYjHdu/ezU033UTVqlWJiopi9OjRR59LTk5myJAhVK5cmZo1azJ+/Pijz40dOxZjDCEhIURFRdGjRw9++uknL34FKSIBX/QTEuDf//Y6hbcOHjzIoEGD6NWrF9WqVdNtRiJyjJ49e7Jt2zbeeecdRowYwRNPPMGbb74JwD333MP8+fOZNWsW48aN45FHHuGdd945+tratWvzzTff8Oyzz7JmzRouuugiNm3a5NWvIqfKWhvQX6GhLe2zz9pSKyEhwTZu3NgaY+xDDz1kjxw54nUkkYD2448/eh2hSG3YsMECdtWqVUe3de/e3V555ZV227ZtNjQ01M6ZM+foc/3797ft27e31lo7ZswY26BBg6PP/fnnn7ZixYp2yJAh/opfauX37xCIsydRMwN+IF/z5vCPf3idwjvjx48nMTGRzz77jE6dOnkdR0RKmD179gCuiz/TU089RWJiIosXL8bn89G5c+ejz7Vo0YKPP/4412PVqlWLa665Js/npeQL+O790mjPnj1s3rwZgJdeeomEhAQVfBHJVZMmTahfvz4DBgzg3XffxVrL2WefTcuWLVm/fj0VK1bktNNOO7p///79Wbp0aZ7Ha9asGZs2beLw4cP+iC9FTEU/wHzxxRc0b96cm266CWst1apV02I5IpKniIgIPvzwQyIiIrjhhhuIjY3l66+/BlzrP+esb1WqVKFJkyZ5Hq9q1aoA7Nu3r/hCS7EJ+KK/fj3Mnu11iuLn8/kYN24cHTp0ICIigmeffVb3Eov4kTHuK7trrnHbPvwwa9uUKW7b7bdnbdu2zW3LuXJ1y5Zue3x81raxY922sWOztmV//mRER0ezfv16XnrpJbZt20aHDh2YP38+qamphIS4MvDNN99gjDn6lRe97wS2gC/6Bw/Cn396naJ47dy5k06dOjFmzBhuuukmVq1aRcuWLb2OJSIBJDw8nDvuuIP/b+/Ow6Osz4WPf29CIAucBEIIBoXUQJFCJI3sWgWFsniBHGQPhQgIWMGDHgGlYMJie7Atpa9SEarB0srrQd4jKAdkUWKxoIEGkNdQoUbgRIWwKJIQIOQ+fzyTIQlLFjIzzOT+XNdczjzr/fwccs/z255PP/2Utm3bMmnSJMLDw8nPzwecavusrCyWL19+3eOcPn0agIiICI/HbGqe3yf9O+6AkSN9HYVnhYeHU1BQwOuvv87KlStp2LChr0MyptZRdV6lvfOOs2zAgMvLJk50li1bdnlZbKyz7Kuvyu6/e7ezvPRv+LQ0Z1npO/0b+Y2/fPly+vbt6/7cpEkT5syZQ25uLlFRUZw6dYrvvvuOsLAwEhMTiYmJue7x9u/fT1xcnM0B4qf8PumHh19ZZRYICgsLWbBgAfn5+YSHh7Nz507GjBnj67CMMX4mJCSErVu3lmmDP3nyJKGhoQwePBiAd0q1T+zdu/eax8rLy2PdunUMGjTIcwEbj/L7IXuB6MCBA4wYMYK9e/fSunVrhg8f7m53M8aYqhgwYACNGjViyJAhPPPMMxw/fpzU1FQmTpxIQkICQ4cOZcqUKQAEBQVd8ejtCxcukJmZyT//+U8WLFhAw4YNmTVrli8uxdQAv88kX38NmZm+jqJmqCqvvfYad911F7m5ubz77rsMHz7c12EZY/xYZGQkW7Zsobi4mMGDB/Pss88yZswYFi5cCMCKFSsYOnQojz32GGlpaTz++ONl9v/666/p0qUL06ZNo3Pnznz88cc2YsiPiZZvpPIzIh31xRd34fqh6tfmz5/Pc889R8+ePfnzn/9MbCC2Wxhzk8vOzqZt27a+DsPUchV9D0Vkt6p2rOpx/b56v1kz6Fjly765qCoiQnJyMvXq1ePpp58mKCjI12EZY4wJMH5fvd+8OXTt6usoqqe4uJhf//rXDBs2DFXl9ttvZ+bMmZbwjTHGeITfJ31/dezYMfr378+MGTMoLi6msLDQ1yEZY4wJcH6f9AsKoNRzJPzCpk2b6NChAxkZGSxdupS33nqL0NBQX4dljDEmwPl90s/OhtWrfR1F5RUUFJCSkkJUVBSZmZlMmjTJprU0xhjjFX7fkS80FJo08XUUFTt69CixsbGEhYXx3nvvER8fbzNaGWOM8Sq/v9P/0Y9g6FBfR3F9b775Ju3bt3ePi01ISLCEb4wxxuv8PunfzPLz85kwYQIjRoygXbt2jBo1ytchGWOMqcUs6XvIp59+SseOHXnttdeYNWsWGRkZxMXF+TosY4wxtZjfJ/19++CNN3wdxZXOnTtHQUEBW7Zs4fnnnyc4ONjXIRljapkVK1YgIogIderUoWXLljz99NPux+l66pzeusH58ssv3ddX/rVixQqvxOBv/L4j38WL4MHvb5WcPHmStWvXMm7cODp37szBgwepV6+er8MyxtRymZmZXLhwgU8++YQ5c+Zw7NgxVq5c6euwaszSpUu5q9zzh3/wgx/4KJor7dmzh23btjFt2jRfh+L/ST8hAUaO9HUU8OGHH5KcnMzx48e5//77iYuLs4RvjLkpdHTNVd69e3fy8/OZN28ef/zjH6lfv76PI6sZbdq0cV/jzWjPnj0sXrz4pkj6fl+9X68eNGjgu/MXFRWRlpZGz549CQ0NZceOHdZ2b4y5aSUlJXHhwgVOnjzp61CMD/h90vclVWXgwIHMnTuX5ORkdu/eTVJSkq/DMsaYazp27BgiQlRUFAC5ubkMGjSIiIgImjVrxpNPPklxcTFwuc18z549DBkyhAYNGnDHHXewY8cO9/E+++wz7r77bkJCQujWrRs5OTllznf69GlGjx5NgwYNaNasGXPnzqXk6a49evRg0qRJdOrUicaNG7N+/Xq6detGZGQkb7/9do1c7/nz55k6dSqNGzemUaNGTJ06lfPnz7vXb9u2DRHh0qVLzJ8/n7i4uDJNHxcvXmTmzJnExMQQFRVFSkoKZ86cca8/c+YMY8eOJTo6msjISAYPHkxeXh4AaWlpiAiPPPIIhw8fdvc3SEtLq5FrqxZV9etXdPRd+tFH6jMrV67UP/3pT74LwBhToz777DNfh1Bj0tPT1fkz79i/f7+2adNGe/Xq5V523333afv27XXLli361ltvaePGjTU9PV1VVXNychTQ9u3b65QpU3Tz5s2alJSkiYmJqqp68eJFbd26tXbr1k03btyo8+bN0+DgYG3ZsqX7+D/96U/1hz/8oa5du1aXLl2qDRo00F/+8pfuczds2FDXrFmjHTp00Lp162p6err26dNH+/XrV+H1lcT3wQcfXHObRx99VJs1a6ZvvPGGrlq1SmNiYnTixInu9R988IECOnHiRO3UqZP+7ne/0+zsbPf6mTNnakxMjL755pv67rvvanx8vA4fPty9furUqRobG6tr167VdevWaUJCgk6YMEFVVXNzczUzM1NTU1P1lltu0czMTM3MzNTc3NwKr62i7yGwS6uRM/2+TT8vDw4cgO7dvXO+wsJCpk+fTlJSEo888gijR4/2zomNMT4T98x6X4cAwJf/8WC19is91XdSUhKvvvoq4Nz0jRo1irvvvpt27dpRVFTEkiVL+Pjjj0lJSXHv07ZtW1588UUAZs2axYgRIwDnOSIHDx5kw4YNxMfH06dPH7Kysvj73/8OwPbt29m0aRNZWVkkJiYCzlTkc+bM4amnngJg5MiRDB48mLVr1xITE0NKSgo5OTlkZGRU+vp69uxZ5nNOTg5xcXEcOXKEV199lTVr1jBo0CAA6tevz5AhQ5g9eza33Xabe5/s7Gy2b99epi/WuXPnWLx4Ma+88grDhg0D4MSJEzz66KMUFhYSEhLCkSNH6NChAwMHDgSgdevWnDp1CoDY2FhiY2PZv38/9erVuyn6Hfh99X6LFtCtm3fOlZ2dTZcuXXjppZc4dOiQd05qjDE3KCsri/Xr1yMizJgxgxYtWgDOj4Fhw4bx3nvv8eCDDxITE8O2bds4d+5cmf0nTpzofh8VFUVRUREABw8epHHjxsTHx7vX33vvve73e/bsISIiwp3wwanSz8/Pd/8NveWWW9yxlH5fFcuXLycrK8v9io2NBWDfvn0UFxfTo0ePMucvLi5m3759ZY7x29/+9orO14cOHeL8+fOkpKS4q+ZTUlK4ePEiR44cAWD8+PFs3bqV7t27M2PGDHJzc+nurbvQavD7O/3oaGjb1rPnUFXS09OZOnUqYWFhrF+/nv79+3v2pMaYm0Z177BvFomJiSQmJjJw4EAWLlzI8OHDAfj+++9JSkqiadOmjBo1ijlz5vDyyy9fsf+1hr8VFxdTp07Ze8egoKAyn8sn8JLP6mrXrwmtWrUq88OivNIxXOv8nTp1umK/km1Wr15Nq1atyqwr+eE0YMAA/vGPf7Bx40YyMjLo168fP//5z1m8eHH1LsbD/P5O3xt27drF+PHj6dKlC3v37rWEb4zxS7NmzSIrK4vNmzcDsHXrVnJyctiwYQNPPPEEXbt2vWotZvlEXiI+Pp6TJ0+673oBPvroI/f7xMREvv322zJ31RkZGYSFhdG6deuauqxruvPOO6lTp06ZpoKMjAzq1KnDnXfeWeH+rVq1ol69ehQWFrp/OIWHh/Ob3/yG06dPA/DCCy9w9OhRJk+ezKpVq5g3bx7p6elljhMSEnJF7Ymv+P2d/nffQW4uNG9e88fOy8sjOjqaTp06sXHjRnr16nXNL78xxtzsOnfuzAMPPMDChQvp3bu3uwd/eno6CQkJLFmyhL/97W+Vntimb9++tGzZkp/97GfMnj2b3bt3s2bNGpq7/iDfc8899O7dm+HDh/PCCy/wzTff8NxzzzF79myvzBHQokULxo8fz+TJkzl37hyqylNPPcWECRPcd+rXExYWxpNPPsn06dNRVZo3b05aWhqnT5+mWbNmABw4cIBVq1bx/PPPExoayrp1664Ytp2UlMSJEydYtmwZ7dq1Y/v27cycOdMTl1yx6vT+u5lecJe+/nqFHSGr5NKlS7pw4UINCwvTTz75pGYPboy5qQVy731V1ffff18BzczMVFXVX/ziFxoVFaUxMTGakpKikyZN0latWmlRUZG7d3xOTo57/5Le7iWys7O1R48eGhYWpklJSTpz5swyvfdPnTqlo0aN0vDwcG3atKmmpqbqpUuXVNXpvZ+amqqqqmPHjtWxY8eqqmpqaqred999FV5fZXrvFxYW6pQpUzQyMlIjIyN1ypQpWlhYeM3rKe/ChQs6ffp0jY6O1oYNG+pDDz2khw8fLnN9Y8eO1aZNm2pYWJjee++9um/fviuOs2zZMr311lu1bt262r59+wqvzVO990VrsF3FFyIiOuqaNbvo1atmjnfs2DHGjBnDpk2bePjhh1m+fDmNGjWqmYMbY2562dnZtPV0RyFjKlDR91BEdqtqlYcD+H2bfuvW1FjC37RpEx06dODDDz9k6dKlrF692hK+McaYgOH3bfo1aceOHTRp0oStW7fSrl07X4djjDHG1Ci/v9O/UV988YW7t+ns2bPJzMy0hG+MMSYg+X3S370b/vKX6u27atUqEhMTmTBhApcuXSIoKIjQ0NCaDdAYY4y5Sfh90q+O/Px8xo0bx6hRo0hISGDjxo02FM8Y4+bvHZyNf/Pk98/v2/STkmDkyMpvn5eXx09+8hM+//xzZs+eTWpqKnXr+n0xGGNqSN26dSkqKiI4ONjXoZhaqqioyGN5ye+znQjUqUJ9RZMmTejZsycvv/zyFQ9pMMaYkJAQzp49ayN3jM98//33hISEeOTYtaJ6/+TJkyQnJ/PFF18gIpbwjTHXFB0dTV5eHgUFBVbNb7xKVSkoKODEiRNER0d75Bx+f6d/6BBs3w733HP19RkZGSQnJ3P8+HEGDhzI7bff7t0AjTF+JSQkhJiYGL755hvOnz/v63BMLVO/fn1iYmI8dqfv90m/ZO798oqKiliwYAHz588nPj6enTt3kpSU5P0AjTF+JyIigoiICF+HYUyN8/vq/fh4uPvuK5cvWrSIuXPnMnr0aHbv3m0J3xhjTK3n93f6kZFw662XP589e5YGDRrw+OOPEx8fz8MPP+y74IwxxpibiN/f6ZcoLCxkypQpdO7cmfz8fMLDwy3hG2OMMaV4PemLyKsiskNEZt/INiVOnIDNm7Pp0qULS5YsoW/fvjbu3hhjjLkKryZ9ERkMBKlqN+B2EWldnW1KO3z4BAMGdOSrr75i/fr1LFq0iPr163vmAowxxhg/5u07/R7Af7rebwKuNtCuMtu41a2bR0JCV/bu3Uv//v1rKExjjDEm8Hi7HjwcKBlgdwq4Wpf6CrcRkYnARNfH87t2vb+/efPmNRyqKacJcMLXQQQ4K2PPszL2PCtj72hTnZ28nfTPAiWPsWvA1WsaKtxGVZcBywBEZJeqdqz5UE1pVs6eZ2XseVbGnmdl7B0isqs6+3m7en83l6vrOwBfVnMbY4wxxlSRt+/03wb+KiKxQD9ghIgsUNXZ19mmq5djNMYYYwKSV+/0VfUMTke9nUBPVd1bLuFfbZvvKjjsMg+Eaq5k5ex5VsaeZ2XseVbG3lGtchZ7ipQxxhhTOwTMjHzGGGOMuT6/Sfo1PZOfuVJF5SciESKyQUQ2ich/iUg9b8cYCCr7PRWRGBHJ8lZcgaQKZfwHERngrbgCSSX+XjQSkf8WkV0i8oq34wsUrr8Df61gm0rnPr9I+p6Yyc+UVcnySwYWqepPgW+Avt6MMRBU8Xv6Gy4PXzWVVNkyFpGfAM1U9R2vBhgAKlnGPwP+4hq+11BEbBhfFYlII+B1nPlrrrVNlXKfXyR9PDCTn7lCDyooP1X9g6pudn2MBo57J7SA0oNKfE9F5H4gH+fHlamaHlRQxiISDCwHvhSRh7wXWsDoQcXf45NAexGJBG4DjnontIByCRgOnLnONj2oQu7zl6Rffpa+mGpuY66t0uUnIt2ARqq60xuBBZgKy9nVbDIHeMaLcQWSynyXxwCfAS8AnUVkqpdiCxSVKePtQEvgCSDbtZ2pAlU9U4kRbFXKff6S9GtkJj9zXZUqPxFpDLwIjPNSXIGmMuX8DPAHVf3Wa1EFlsqU8Y+BZar6DfBnoKeXYgsUlSnjVGCyqs4DDgCPeCm22qZKuc9fEqPN5Od5FZaf6w50NfCsqh72XmgBpTLf017A4yKyDUgUkT96J7SAUZkyPgTc7nrfEbDvc9VUpowbAQkiEgR0AWx8uGdUKff5xTh9EfkX4K/AVlwz+QFDS0/sc5VtulaiWsS4VLKMHwN+Cex1LXpZVd/0dqz+rDLlXG77baraw3sR+r9KfpcbAq/hVIUGA0NUNfcqhzNXUcky7gyk41Tx7wD+VVXP+iBcv1fyd0BEfgSMupHc5xdJH9y9GHsDH7qq5Kq1jbk2Kz/vsHL2PCtjz7MyvnlU5f+F3yR9Y4wxxtwYf2nTN8YYY8wNsqRvjDHG1BKW9I0xHiciQSIivo7DmNrOkr4xAUJEBolI92usC/HksxJEpI+I/Hupz78SkfdKbfIc8I5r+FZljpfsmgTKGFOD6vo6AGNMjZkDvC8ii3DGRZd4FogDRoqI4kzg8biqvgIgIj8GCql4HHUQEAJ8qqoXyq37DpglIk1VdSZwHjjnOn5/YAbOUKNLpXdyTYdbFzivqsWlVo0DCoABpbYNAuoBxap6voJYjTFXYUnfmAAgIi2ABGAg0BnoqarbRGQFTkKdDEx2bbsNZxavEjtxknTppFsPJ8GXnvO7jmt5G1yT2YhIfUCAT4AHgd+7xsCX9hTwmKqWPJmxjqoWutYNB14CzolISSIPxvkBUiQiX5Y6TjAQhvMgoucrVTDGmDIs6RsTGMYCu1U113U3XxH3Hbeq1i+/UkRSgDRVjavgOAuBfyu3zP1DoVQsD4hIuuv9WmCQ6/0q1383quoJ1z6rgEjXNolApqoWu54e9iDONNDGmGqwNn1j/JyI1AUm4Nytl/jAlXDHAiEiskVEvheRb3Gm7LzmozqrKA2IAoJVVYBWwNfA5zjJvS2wDqd5oQ5O7cHIUvuHAl2Bz0Wkt4i8BTTDmbd9FpAB9BORccAu4BbXMYwx1WB3+sb4v0dw2ulL66mq20o+iMjvcarvz+tVZuQSkX8DClR1eVVOXPqhQK7HAb/hen2P81Cbszg/MPYD/66qy8rtfxaYIiLLgAvAwzg1BZtxfhD8q6qud/U7GKuqb1clPmNMWXanb4wfc7Xl/wfwh2usDxGRpjiPkh0JjBWRFBFpX27T3sC95ZbVEZHIUq8mInLLVc7RwVUl/w7wK1V9Cqftv76q/o/r2KnAEhF5xxVPefnAtzj9Eu7H6ScwGmguIkk4z2ZvZcP+jLkxlvSN8W9f4STU3eWWl1TvnwNuA34NJOO0ky8CWpfbvohS7fwutwGnS73ygA2lNxCRTsDfcTrYJarq70vF9a2IBKljEc7DQFpQ7u+OiPQDPgYewKkVWIvTe38N0AfnwThxOKMQ3hKRsIoKxRhzdZb0jfFjqlqkqi9dZVVPVxt7KE5S/m/gJVUdhFONvqsShz+sqlLywuk9X34egP1AO1V9SFUPllvXmVIjAlR1i2uZe+SAiMwC/oRTE5GN8zS2hsD/wRkG2AVoByThPAL3Tpwe/8aYarA2fWMClKsqvKQ6fAvQV0T24bTdH63q8VS1CKdGoLQNwH3XqXUvvsY6EZE6wP8F/lNVD7kWdsF5HvirwBeqOs31iNajqvq1iCQC6qpBKF8zYYypgCV9YwLTB6Xe/wD4fziz4imwpAbP0991TPfkOiLSBtgD5ALvqOqTJRu7xumXDBFMwGmWuCAi5Sf7Ccf5wZBSal+4PFdAH5ye/caYKrCkb0xgKpmcJxgoUlUVkU04beXNauokqlpQ+rOIxAJ/wamynwv8zVXj8KyqnnPN5HfBte9ervE3SETeBr5U1Wk1Fasxxtr0jQkUQVz+9xxcslBVLwINRGQO0BfYC7wmIjGuh+AkikhbnCF/ESJyh4jcgTMePrjks+v1I9f2rcqfXESiRORJnDv8bOAJVf0K6IbTFr9fRKaKSITnisAYUxG70zcmMIRwedIa9wx7rgfwbMTpEZ+E0wt/MfAZTqe4jyk77/7Ocsct/znYdbyHXcefhjMU8MfA/wcmqep/lWzsaofvAUzEmchnkYi8qaqjK7ie0j9ijDE1RK4yT4cxJoCISIyqHiu3rEnJtLc3eOy7gV7A267q+uttWx9nyOBXqvrXCrbdDOSo6sQbjdEYc5klfWOMMaaWsOozY4wxppawpG+MMcbUEpb0jTHGmFrCkr4xxhhTS1jSN8YYY2oJS/rGGGNMLfG/Y7/5Zko/1NEAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8, 6))\n",
    "plt.plot(fpr, tpr, \"b:\", linewidth=2, label=\"SGD\")\n",
    "plot_roc_curve(fpr_forest, tpr_forest, \"Random Forest\")\n",
    "plt.legend(loc=\"lower right\", fontsize=16)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9927809508140626"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Rand 比SGD 好很多，ROC AUC的分数也高很多\n",
    "roc_auc_score(y_train_5, y_scores_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.985648045926253"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 再看一下 精度和召回率 也很高\n",
    "y_train_pred_forest = cross_val_predict(forest_clf, X_train, y_train_5, cv=3)\n",
    "precision_score(y_train_5, y_train_pred_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.823464305478694"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, y_train_pred_forest)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 总结\n",
    "* 选择合适的指标利用交叉验证来对分类器进行评估\n",
    "* 选择满足需求的精度/召回率权衡\n",
    "* 使用ROC曲线和ROC AUC分数比较多个模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多类别分类器\n",
    "* 尝试5 之外的检测\n",
    "* 多类别分类器 区分两个以上的类别\n",
    "* 随机森里和朴素贝叶斯可以直接处理多个类别\n",
    "* 支持向量机svm和线性分类器只可以处理二元分类器"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 解决方案\n",
    "1. 将数字图片分类0到9，训练10个二元分类器，每个数字一个，检测一张图片时，获取每个分类器的决策分数，哪个最高属于哪个，称为一对多OvA\n",
    "2. 为每一对数字训练一个二元分类器，区分0，1 区分0，2 区分1，2 称为一对一OvO策略，存在N个类别，需要N*（N-1）/2个分类器，最后看哪个类别获胜最多\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 优缺点\n",
    "* OvO 只需要用到部分训练集对其必须区分两个类别进行训练\n",
    "* 对于较小训练集合OvO比较有优势， 大训练集合 OvA 速度快，所以OvA更常用，比如svm 在数据规模扩大时表现糟糕\n",
    "* sklearn 检查到使用二元分类算法进行多类别分类任务，会自动运行OvA，SVM分类器除外"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.fit(X_train, y_train)\n",
    "sgd_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-283336.05542728, -609702.26098582, -337584.03028126,\n",
       "         -67533.43512934, -244850.72309323,   42664.65743528,\n",
       "        -631943.46912582, -259918.54566156, -684512.90155596,\n",
       "        -535163.16746319]])"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 内部实际上训练了10个二元分类器，获得图片的决策分数，然后选择了分数最高的类别\n",
    "# 返回10个分数，每个类别1个\n",
    "some_digit_scores = sgd_clf.decision_function([some_digit])\n",
    "some_digit_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.argmax(some_digit_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 目标类别列表会存储在classes_这个属性中，按值大小排列，\n",
    "sgd_clf.classes_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.0"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.classes_[np.argmax(some_digit_scores)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用OvO策略，一对一或者一对多\n",
    "from sklearn.multiclass import OneVsOneClassifier\n",
    "ovo_clf = OneVsOneClassifier(SGDClassifier(max_iter=5, tol=-np.infty, random_state=42))\n",
    "ovo_clf.fit(X_train, y_train)\n",
    "ovo_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "45"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(ovo_clf.estimators_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用随机森林\n",
    "forest_clf.fit(X_train, y_train)\n",
    "forest_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.2, 0. , 0.1, 0.1, 0. , 0.6, 0. , 0. , 0. , 0. ]])"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 随机森林直接将实例分为多个类别，调用predict_proba()可以获得分类器将每个实例分类为每个类别的概率列表\n",
    "forest_clf.predict_proba([some_digit])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 评估分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.86477704, 0.85984299, 0.88228234])"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用交叉验证评估SGD的准确率\n",
    "cross_val_score(sgd_clf, X_train, y_train, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.90906819, 0.90644532, 0.91048657])"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将输入进行简单缩放 ，可以得到准确率 90 %以上\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()\n",
    "X_train_scaled = scaler.fit_transform(X_train.astype(np.float64))\n",
    "cross_val_score(sgd_clf, X_train_scaled, y_train, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 错误分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 项目流程\n",
    "1. 探索数据准备的选项\n",
    "2. 尝试多个模型\n",
    "3. 选择最佳模型并用GridSearchCV对参数进行微调\n",
    "4. 尽可能自动化\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 确定了一个相对合适的模型，进一步优化，分析其错误类型\n",
    "* 查看混淆矩阵\n",
    "* 使用cross_val_predict()进行预测\n",
    "* 调用confusion_matrix()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "G:\\Python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[5736,    3,   20,   10,   10,   49,   43,   10,   39,    3],\n",
       "       [   1, 6459,   47,   30,    6,   44,    6,   12,  122,   15],\n",
       "       [  54,   37, 5312,  109,   78,   28,  102,   54,  169,   15],\n",
       "       [  43,   43,  132, 5370,    1,  219,   33,   58,  130,  102],\n",
       "       [  22,   28,   32,   11, 5351,   10,   53,   34,   87,  214],\n",
       "       [  73,   40,   32,  208,   66, 4584,  109,   35,  173,  101],\n",
       "       [  33,   21,   49,    2,   40,   98, 5621,    7,   45,    2],\n",
       "       [  23,   18,   69,   30,   52,   11,    7, 5804,   18,  233],\n",
       "       [  48,  155,   70,  184,   11,  156,   58,   26, 4992,  151],\n",
       "       [  46,   27,   29,   94,  160,   31,    2,  195,   74, 5291]],\n",
       "      dtype=int64)"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_pred = cross_val_predict(sgd_clf, X_train_scaled, y_train, cv=3)\n",
    "conf_mx = confusion_matrix(y_train, y_train_pred)\n",
    "conf_mx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用matplotlib的matshow 函数来查看混淆矩阵的图像表示\n",
    "plt.matshow(conf_mx, cmap = plt.cm.gray)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 看起来不错，大多数图片都在主对角线上，说明它们被正确分类\n",
    "# 数字5 看起来比较暗，说明1. 数字5图片较少  2. 分类器在数字5上执行效果不如其他数字上好\n",
    "# 假设把焦点放在错误上，为取得错误率，而不是错误绝对值，需要将混淆矩阵中每个值除以相应类别中的图片数量\n",
    "\n",
    "row_sums = conf_mx.sum(axis=1, keepdims=True)\n",
    "norm_conf_mx = conf_mx / row_sums"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 用0填充对角线 只保留错误，重新绘制\n",
    "np.fill_diagonal(norm_conf_mx, 0)\n",
    "plt.matshow(norm_conf_mx, cmap=plt.cm.gray)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 每行代表实际类别，每列代表预测类别\n",
    "# 8，9列比较亮，说明许多图片被错误的分类为数字8，9\n",
    "# 类别8，9行也偏亮，说明数字8和9经常会跟其他数字混淆\n",
    "# 有些很暗，比如行1，大多数数字1都被正确的分类，一些和8混淆\n",
    "# 5和3是错误最多的"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 结论\n",
    "* 改进数字8和9的分类\n",
    "* 修正数字3和5的混淆\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 如何优化分类器\n",
    "* 尝试多收集这些数字的训练集\n",
    "* 开发一些新特征来改进分类器\n",
    "* 优化分类器算法\n",
    "* 使用pillow或opencv对图片预处理，让显示模型更突出\n",
    "* 分析单个错误"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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gerqai5cuMA777yDwWBgYWFBPL5rIdDr9fT395OcnExISIjHbbvXUVNTw0cffURdXR0hISHMzs4uEo2Ga+89rVZLYGDgXXUyTqeThoYGysvLOXjwIG1tbajVatRqNWFhYSQmJhITE4NOpxOlo4aHh++avXcDgiBgs9mYnp5GLpejUChQKBQsLCwwOzsrBi/Nzc309PTQ3t4uXtOZmRk+/PBDpqamsNls4nfu3buXZ599luLiYo9cfxdRuyAI6PV6DAYDo6OjnD59mp6eHrq6umhvbxfXO4lEgtPpJDY2li1btrBz504yMjJISEi4rePfsXM0mUz89re/5dixY/T19d3Swjw+Pk5PTw8dHR1L4hz1er0oyApX9NN0Op2YZrs6um1ububHP/4xpaWlxMXFuTVNeSMba2treeedd7hw4QJNTU2YzeZF51OhUKBWqykuLqa5uZmxsTHGx8fF35KUlCSKS98pxsfHaWxsZN++fRQXF5Obm0tubi7p6ekEBQUhlUoxGo2EhITg7e2NIAgYjUZaWlpobGxk//79HD16lPr6ehobG/m7v/s7jyuad3V1cfHiRf73//7fDA8PMzc9hsJlAAAgAElEQVQ3h7+/P7t27SIjI4OcnBzCw8P5p3/6J/bt20dYWBgREREEBQV51K4vCtra2jh8+DBDQ0NIpVKCgoLYvn27+He5XE5paSkfffQRFy9eZHx8nL/5m79h/fr1ZGZmukt49pbQ19fHb3/7Ww4ePIhGo+H+++/n1VdfFSMaqVSKTCajtbWVAwcOoFariYuLIy0t7c8qajx48CCVlZV8/PHHhIaGotVqCQsLY3Z2loaGBjETsLCwwMLCghhhwpXNx/z8PA6HQ9wcKZVKsQnQnefRarUyNjZGf3+/KPd19OhRMXJcWFggKCgItVpNVFQUjz322KL7rq2tja6uLt5++236+vr46le/eveco8PhYHR0lJmZmUXO5WoolUpUKhUxMTEMDAyIXZcOh4PLly9TXV3Ntm3b7tSUG0IqlaJSqZDJZKI4anR0tLhguhx0T08PjY2NAOIuy2azLdKj9BRczrG+vp729nYxTeVSyM7IyCAjI4PY2FjCwsLo6upaJJwaExPDmjVriI6OdotGplwuJzw8nKKiIrZv3056ejoJCQlotVoUCgUSiYSgoCDxv+GKKK4rpeHj48Pvf/97xsfH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leeff54jR45QW1vLqlWr2LFjB0899RSpqane8D761q0qIfEFQjKOdzmTk5PMzMxgtVrFBBiNRrMoSXYS3sXj8TA5Ocns7CxWq1VsTXYnQjELkIyjhISXkIyjhMSfDzecz1I2jISEhISExAI+K4r5ed0hS0hIXI80nyUkbhLp5CghISEhIbEAyThKSEhISEgsQDKOEhISEhISC5CMo4SEhISExAIk4yghISEhIbEAyThKSEhISEgsQDKOEhISEhISC5CMo4SEhISExAIk4yghISEhIbEAyThKSEhISEgsQDKOEhISEhISC5CMo4SEhISExAIk4yghISEhIbEAyThKSEhISEgsQDKOEhISEhISC5CMo4SEhISExAIk4yghISEhIbEAyThKSEhISEgsQDKOEhISEhISC5CMo4SEhISExAIk4yghISEhIbEAyThKSEhISEgsQDKOEhISEhISC5CMo4SEhISExAIk4yghISEhIbEAyThKSEhISEgsQDKOEhISEhISC5CMo4SEhISExAIk4yghISEhIbEAyThKSEhISEgsQDKOEhISEhISC5CMo4SEhISExAIk4yghISEhIbEAyThKSEhISEgsQDKOEhISEhISC5CMo4SEhISExAIk4yghISEhIbEAyThKSEhISEgswP8zXvcsyigkJD5fyJZ6ALeJNJ8lJK7nhvNZOjlKSEhISEgsQDKOEhISEhISC5CMo4SEhISExAIk4yghISEhIbGAz0rIuSPcbjdut5vh4WHGxsbo7+8nNzeXqKgowsPDxffJZDL8/PyQyT6veQ63z8zMDFNTU0xNTd3w9fn5eWZmZpibm0Mul4s/NpuN0NBQsrOziY2Nxc/vi7fPsdvtOJ1O7HY7Q0NDOBwOPB4PLpcLg8GA2+0mLy+PhIQElErlUg/3zwqPx4PdbmdkZAS73Y7H42FiYgKj0cj8/Lz4PrlcjlKpZO3atYSEhKBSqZZw1IuH0+mkv78fi8WC1WplZmZGvBcqlYrBwUEcDgcymQytVktwcDBKpRJ/f39UKhU6nY6QkBACAwO/kOvi3YDPjKPT6cThcGCxWPjoo48oLy/njTfe4H/8j/9BaWkpJSUl4nv9/PzQaDTI5fJFfRA8Ho/4I5PJxJ+rX3c6nXg8/5nkJ5fLvWbIPR4Pvb291NbWUldXd8P3DA0NcfnyZfr7+wkMDESl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\n",
      "text/plain": [
       "<Figure size 576x576 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_digits(instances, images_per_row=10, **options):\n",
    "    size = 28\n",
    "    images_per_row = min(len(instances), images_per_row)\n",
    "    images = [instance.reshape(size,size) for instance in instances]\n",
    "    n_rows = (len(instances) - 1) // images_per_row + 1\n",
    "    row_images = []\n",
    "    n_empty = n_rows * images_per_row - len(instances)\n",
    "    images.append(np.zeros((size, size * n_empty)))\n",
    "    for row in range(n_rows):\n",
    "        rimages = images[row * images_per_row : (row + 1) * images_per_row]\n",
    "        row_images.append(np.concatenate(rimages, axis=1))\n",
    "    image = np.concatenate(row_images, axis=0)\n",
    "    plt.imshow(image, cmap = matplotlib.cm.binary, **options)\n",
    "    plt.axis(\"off\")\n",
    "\n",
    "\n",
    "# 查看数字3和数字5的例子\n",
    "cl_a, cl_b = 3, 5\n",
    "X_aa = X_train[(y_train == cl_a) & (y_train_pred == cl_a)]\n",
    "X_ab = X_train[(y_train == cl_a) & (y_train_pred == cl_b)]\n",
    "X_ba = X_train[(y_train == cl_b) & (y_train_pred == cl_a)]\n",
    "X_bb = X_train[(y_train == cl_b) & (y_train_pred == cl_b)]\n",
    "\n",
    "plt.figure(figsize=(8,8))\n",
    "plt.subplot(221); \n",
    "plot_digits(X_aa[:25], images_per_row=5)\n",
    "plt.subplot(222); \n",
    "plot_digits(X_ab[:25], images_per_row=5)\n",
    "plt.subplot(223);\n",
    "plot_digits(X_ba[:25], images_per_row=5)\n",
    "plt.subplot(224); \n",
    "plot_digits(X_bb[:25], images_per_row=5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 左侧两个是被分类为3的图片\n",
    "# 右侧两个是被分类为5的图片\n",
    "# 大多数错误分类的图片看起来还是非常明显的错误\n",
    "# 原因：SGD是一个线性模型，它所做就是为每个像素分配一个各个类别的权重，当它看到新的图像，将加权后的像素强度汇总，从而得到一个分数进行分类\n",
    "# 数字3和5在一部分像素位上有区别，所以分类器很容易将其弄混\n",
    "# 通过上面图像，如果书写3 的连接点左移，分类器可能将其分类为数字5，这个分类器对图像位移和旋转敏感\n",
    "# 减少混淆的方法之一，就是对图像进行预处理，确保位于中心位置并且没有旋转"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多标签分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 为每个实例产生多个类别 ，例如 照片识别多个人脸\n",
    "# 分类器经过训练可以识别小红，小白，小军，一张照片 里有 小红，小白\n",
    "# 经过分类器，应该输出[1,1,0]， 是小红，是小白，不是小军\n",
    "# 输出多个二元标签的分类系统称为多标签分类系统"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
       "           metric_params=None, n_jobs=1, n_neighbors=5, p=2,\n",
       "           weights='uniform')"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "y_train_large = (y_train >= 7)\n",
    "y_train_odd = (y_train % 2 == 1)\n",
    "y_multilabel = np.c_[y_train_large, y_train_odd]\n",
    "\n",
    "knn_clf = KNeighborsClassifier()\n",
    "knn_clf.fit(X_train, y_multilabel)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False,  True]])"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# knn支持多标签分类，不是所有的分类器都支持\n",
    "knn_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.97709"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# # 评估多标签分类器方法很多，方法之一就是测量每个标签的F1分数，或者其他二元分类器指标，然后简单平均\n",
    "# y_train_knn_pred = cross_val_predict(knn_clf, X_train, y_multilabel, cv=3)\n",
    "# f1_score(y_multilabel, y_train_knn_pred, average=\"macro\")\n",
    "0.977090"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 上面假设了所有标签都同等重要，也可以给每个标签设置一个权重（该目标标签实例的数量），设置average='weighted'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多输出分类"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 例子：构建一个系统去除图片中的噪声，输入一张有噪声的图片，它将输入一张干净的数字图片，分类器输出是多个标签，一个像素一个标签，每个标签多个值0到255"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 增加噪声，目标将图片还原为原始图片 创建训练集和测试集\n",
    "noise = np.random.randint(0, 100, (len(X_train), 784))\n",
    "X_train_mod = X_train + noise\n",
    "noise = np.random.randint(0, 100, (len(X_test), 784))\n",
    "X_test_mod = X_test + noise\n",
    "y_train_mod = X_train\n",
    "y_test_mod = X_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "some_index = 5500\n",
    "plt.subplot(121);plt.imshow(X_test_mod[some_index].reshape(28, 28), cmap = matplotlib.cm.binary)\n",
    "plt.subplot(122);plt.imshow(y_test_mod[some_index].reshape(28, 28), cmap = matplotlib.cm.binary)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [],
   "source": [
    "knn_clf.fit(X_train_mod, y_train_mod)\n",
    "clean_digit = knn_clf.predict([X_test_mod[some_index]])\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(clean_digit.reshape(28, 28), cmap = matplotlib.cm.binary)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 作业一：尝试用其他分类器来预测MINST数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.tree import DecisionTreeClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1., 0.],\n",
       "       [1., 0.],\n",
       "       [0., 1.],\n",
       "       ...,\n",
       "       [1., 0.],\n",
       "       [1., 0.],\n",
       "       [1., 0.]])"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tree_clf = DecisionTreeClassifier(random_state = 42)\n",
    "# 得到决策值m\n",
    "y_score_tree = cross_val_predict(tree_clf,X_train,y_train_5,cv=3,method = 'predict_proba')\n",
    "y_score_tree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 0., 1., ..., 0., 0., 0.])"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_score_tree_final = y_score_tree[:,1]\n",
    "y_score_tree_final"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [],
   "source": [
    "fpr_tree,tpr_tree,threshold_tree = roc_curve(y_train_5,y_score_tree_final)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "G:\\Python37\\lib\\site-packages\\ipykernel_launcher.py:5: MatplotlibDeprecationWarning: Unrecognized location 'lover right'. Falling back on 'best'; valid locations are\n",
      "\tbest\n",
      "\tupper right\n",
      "\tupper left\n",
      "\tlower left\n",
      "\tlower right\n",
      "\tright\n",
      "\tcenter left\n",
      "\tcenter right\n",
      "\tlower center\n",
      "\tupper center\n",
      "\tcenter\n",
      "This will raise an exception in 3.3.\n",
      "  \"\"\"\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<function matplotlib.pyplot.show(*args, **kw)>"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,6))\n",
    "plt.plot(fpr,tpr,'b:',linewidth=2,label='SGD')\n",
    "plot_roc_curve(fpr_forest,tpr_forest,'Random Forest')\n",
    "plot_roc_curve(fpr_tree,tpr_tree,'Decision Tree')\n",
    "plt.legend(loc='lover right',fontsize=16)\n",
    "plt.show"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_auc_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9182642174232742"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算ruo auc 分数\n",
    "roc_auc_score(y_train_5,y_score_tree_final)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
